pygame is
Python
Simple DirectMedia Layer
 
 
pygame.org is
Site Swing
PyComicView

PyComicView - 1

Jeffrey Aylesworth (jeffayle)

Tags:

Description

PyComicView

PyComicView is a python library for displaying comic directories.

Why?

There is a lack of good, free and Mac compatible comic book readers. Not that this is only for Mac, but being written in Python, it should work properly on any platform.

Looking for a program for reading comics, some of the problems I found in the major readers are:

  • Only runs on a single OS. Readers with Mac support tended to be dead, and only have PPC binaries.
  • Commercial
  • Unstable

Library?

Instead of completely writing a whole new comic reader, I decided to write a python module that will display a comic when told to. The reasoning was that without the need to write all the comic displaying code, more people would be willing to write frontend programs that organize comics and all that stuff.

Usage

PyComicView is contained in a single module, comicview. Importing this module will grant access to the single class contained, the Comic class.

This alone is enough to display a comic, as in the example found in readcomic.py:

import comicview
import sys
import os

c = comicview.Comic(os.path.join(sys.argv[1], '*'))
c.read()

That's all! This will display the comic in the directory specified on the command line. (Note: The Comic constructor expects a shell glob pattern, and not a directory. This may change in the future)

However, it can be subclassed to add more functionality, for example by overloading the customDraw() method, you can add extra information to the display.

For example, in customDrawingExample.py:

import comicview
import sys
import os
import pygame #We'll want this in here for convenience

class CustomComic(comicview.Comic):
    fnt = pygame.font.SysFont(pygame.font.get_default_font(), 36)
    def customDraw(self):
            text = CustomComic.fnt.render(str(self.page),False,(255,255,255))
            self.scr.blit(text, (0,0) )

c = CustomComic(os.path.join(sys.argv[1], '*'))
c.read()

This will draw the page number in the upper left hand corner.

Features

It is really bare on features. It doesn't use too much memory, but does use more processor cycles than other comic readers, due to being written in python.

The main feature it has (that I have not seen in other viewers) is continuous scrolling from one page to the next, ie. it looks like one long page.

Limitations

The module is still young, and limited in features. Currently, it can only display uncompressed images in a directory, and not in standard cbz or cbr archives. I am undecided on whether or not to include reading from archives, each has it's advantage; not having that feature would mean that each program can organize files however they want, and not reading from archives is faster. Having the ability to read from archives would mean that each program would not need to implement it themselves, and would allow for optimizations specific to it.

There is also as yet, no zooming functionality. There probably wont be for a while. In the nearer future, there will probbly be a magnifying glass to help see detail.

Memory Usage

Each page is stored in memory only once, and that is what is shown on screen. It is stored scaled to the size being viewed (when you resize, the image is reloaded from disk). Pages that are more than two pages away from the currently view pageare deleted from memory, and are loaded again when needed.

When reading a typically sized comic on full width (1280px) it usually uses 48mb, and spikes at 58mb.

License

PyComicView is written by Jeffrey Aylesworth. See COPYING for more license information.

The comic in the screenshot is "A Spectrum of Rights": http://wiki.creativecommons.org/Spectrumofrights_Comic1

Links

Home Page: http://github.com/jeffayle/PyComicView
Source: http://github.com/jeffayle/PyComicView/downloads

Screenshot


click to view original size

Releases

PyComicView - 1 - Oct 22, 2009

Pygame.org account Comments

If you wish to leave a comment with your pygame.org account, please sign in first.

October 23, 2009 7:22am - Jeffrey Aylesworth - nickname: (jeffayle)
Thanks! Looks a lot nicer now
October 23, 2009 4:33am - J. D. Bartlett - nickname: (talljosh)
Yeah, I had that trouble with formatting too. I discovered that what you're entering for pygame.org is actually html.
spotlight

 
our projects
pygame.org welcomes all python game, art, music, sound, video and multimedia projects. If they use pygame or not.
 
recent releases
Sep 29, 2014

Sep 19, 2014

Sep 17, 2014

Sep 9, 2014

Sep 8, 2014

Sep 7, 2014


Sep 5, 2014

Aug 26, 2014

Aug 21, 2014


Aug 18, 2014

... more!
 
for pygame related questions, comments, and suggestions, please see help (lists, irc)