log_formatter_pil.py
changeset 140 6db2527b67cf
parent 139 9c7769850195
child 141 65c98c9e1716
--- a/log_formatter_pil.py	Sun Sep 13 00:49:55 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-"""
-    Use of PIL to render the image formatting stuff
-"""
-
-from PIL import Image, ImageDraw, ImageFont
-
-from cStringIO import StringIO
-
-class PILImageFormatter (object) :
-    """
-        Mixin for LogFormatter that implements the basic image-rendering operations on top of format_txt
-    """
-    
-    # the font we load
-    font = None
-
-    # line spacing in pixels
-    LINE_SPACING = 1
-
-    def _load_font (self) :
-        """
-            Use the configured img_ttf_path for a TrueType font, or a default one
-        """
-
-        if self.font :
-            pass
-        
-        elif self.img_ttf_path :
-            # load truetype with configured size
-            self.font = ImageFont.truetype(self.img_ttf_path, self.img_font_size)
-
-        else :
-            # default
-            self.font = ImageFont.load_default()
-
-        return self.font
-
-    def format_png (self, lines, **kwargs) :
-        """
-            Build and return a PNG image of the given lines, using format_txt
-        """
-
-        # load font
-        font = self._load_font()
-
-        # build list of plain-text line data
-        lines = list(data for line, data in self.format_txt(lines, **kwargs))
-        
-        # lines sizes
-        line_sizes = [font.getsize(line) for line in lines]
-
-        # figure out how wide/high the image will be
-        width = max(width for width, height in line_sizes)
-        height = sum(height + self.LINE_SPACING for width, height in line_sizes)
-
-        # create new B/W image
-        img = Image.new('L', (width, height), 0xff)
-
-        # drawer
-        draw = ImageDraw.Draw(img)
-        
-        # starting offset
-        offset_y = 0
-
-        # draw the lines
-        for line, (width, height) in zip(lines, line_sizes) :
-            # draw
-            draw.text((0, offset_y), line, font=font)
-
-            # next offset
-            offset_y += height + self.LINE_SPACING
-        
-        # output buffer
-        buf = StringIO()
-
-        # save
-        img.save(buf, 'png')
-
-        # return data
-        return buf.getvalue()
-