models.py 文件源码

python
阅读 24 收藏 0 点赞 0 评论 0

项目:nider 作者: pythad 项目源码 文件源码
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)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号