# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
#
import re
-from PIL import Image, ImageFont, ImageDraw, ImageFilter, ImageEnhance
+from PIL import Image, ImageFont, ImageDraw, ImageFilter
from StringIO import StringIO
-from librarian import DCNS, URLOpener
+from librarian import DCNS, BuildError
from librarian.output import OutputFile
from librarian.utils import get_resource
from librarian.formats import Format
logo_bottom = None
logo_width = None
+ logo_file = get_resource('res/wl-logo.png')
uses_dc_cover = False
format = 'JPEG'
}
def __init__(self, doc, format=None, width=None, height=None):
+ super(Cover, self).__init__(doc)
self.author = ", ".join(auth for auth in doc.meta.get(DCNS('creator')))
self.title = doc.meta.title()
if format is not None:
img = Image.new('RGB', (metr.width, metr.height), self.background_color)
if self.background_img:
+ IMG_EXT = ('png', 'jpg', 'jpeg')
+ if '.' not in self.background_img or self.background_img.rsplit('.')[1].lower() not in IMG_EXT:
+ raise BuildError('Wrong cover format, should be PNG or JPG')
background = Image.open(self.background_img)
- img.paste(background, None, background)
- del background
+ resized = background.resize((1024, background.height*1024/background.width), Image.ANTIALIAS)
+ resized = resized.convert('RGBA')
+ img.paste(resized, (0, 0), resized)
+ del background, resized
- # WL logo
if metr.logo_width:
- logo = Image.open(get_resource('res/wl-logo.png'))
- logo = logo.resize((metr.logo_width, logo.size[1] * metr.logo_width / logo.size[0]))
- img.paste(logo, ((metr.width - metr.logo_width) / 2, img.size[1] - logo.size[1] - metr.logo_bottom))
+ logo = Image.open(self.logo_file)
+ logo = logo.resize((metr.logo_width, logo.size[1] * metr.logo_width / logo.size[0]), Image.ANTIALIAS)
+ logo = logo.convert('RGBA')
+ img.paste(logo, ((metr.width - metr.logo_width) / 2,
+ img.size[1] - logo.size[1] - metr.logo_bottom), logo)
top = metr.author_top
tbox = TextBox(
author_font = ImageFont.truetype(
self.author_font_ttf, metr.author_font_size)
- tbox.text(self.pretty_author(), self.author_color, author_font,
+ tbox.text(
+ self.pretty_author(), self.author_color, author_font,
metr.author_lineskip, self.author_shadow)
text_img = tbox.image()
img.paste(text_img, (metr.author_margin_left, top), text_img)
)
title_font = ImageFont.truetype(
self.title_font_ttf, metr.title_font_size)
- tbox.text(self.pretty_title(), self.title_color, title_font,
+ tbox.text(
+ self.pretty_title(), self.title_color, title_font,
metr.title_lineskip, self.title_shadow)
text_img = tbox.image()
img.paste(text_img, (metr.title_margin_left, top), text_img)
return img
- imgstr = StringIO()
- img.save(imgstr, format=self.format, quality=95)
- OutputFile.from_string(imgstr.getvalue())
+ # imgstr = StringIO()
+ # img.save(imgstr, format=self.format, quality=95)
+ # OutputFile.from_stringing(imgstr.getvalue())
def mime_type(self):
return self.mime_types[self.format]