def _draw_watermark(self):
'''Draws a watermark on the image'''
watermark_image = PIL_Image.new('RGBA', self.image.size, (0, 0, 0, 0))
self.watermark._adjust_fontsize(self.image)
draw = ImageDraw.Draw(watermark_image, 'RGBA')
w_width, w_height = self.watermark.font.getsize(self.watermark.text)
draw.text(((watermark_image.size[0] - w_width) / 2,
(watermark_image.size[1] - w_height) / 2),
self.watermark.text, font=self.watermark.font,
fill=self.watermark.color)
if self.watermark.rotate_angle:
watermark_image = watermark_image.rotate(
self.watermark.rotate_angle, PIL_Image.BICUBIC)
alpha = watermark_image.split()[3]
alpha = ImageEnhance.Brightness(alpha).enhance(self.watermark.opacity)
watermark_image.putalpha(alpha)
# Because watermark can be rotated we create a separate image for cross
# so that it doesn't get rotated also. + It's impossible to drawn
# on a rotated image
if self.watermark.cross:
watermark_cross_image = PIL_Image.new(
'RGBA', self.image.size, (0, 0, 0, 0))
cross_draw = ImageDraw.Draw(watermark_cross_image, 'RGBA')
line_width = 1 + int(sum(self.image.size) / 2 * 0.007)
cross_draw.line(
(0, 0) + watermark_image.size,
fill=self.watermark.color,
width=line_width
)
cross_draw.line(
(0, watermark_image.size[1], watermark_image.size[0], 0),
fill=self.watermark.color,
width=line_width
)
watermark_cross_alpha = watermark_cross_image.split()[3]
watermark_cross_alpha = ImageEnhance.Brightness(
watermark_cross_alpha).enhance(self.watermark.opacity)
watermark_cross_image.putalpha(watermark_cross_alpha)
# Adds cross to the watermark
watermark_image = PIL_Image.composite(
watermark_cross_image, watermark_image, watermark_cross_image)
self.image = PIL_Image.composite(
watermark_image, self.image, watermark_image)
评论列表
文章目录