在Django模板中显示图像时,可以使用Django模板标签和过滤器来临时添加水印图像或
版
权文本。下面是一个示例
解决方案
的代码:
首先,在你的Django项目中创建一个名为
templatetags
的文件夹,并在其中创建一个名为
watermark.py
的文件。
在
watermark.py
文件中添加以下代码:
from django import template
from PIL import Image, ImageDraw, ImageFont
register = template.Library()
@register.filter
def add_watermark(image_path, watermark_text):
# 打开原始图像
image = Image.open(image_path).convert("RGBA")
width, height = image.size
# 创建水印图像
watermark = Image.new("RGBA", image.size, (255, 255, 255, 0))
draw = ImageDraw.Draw(watermark)
# 设置水印文本样式
font = ImageFont.truetype("path_to_font.ttf", 36)
text_width, text_height = draw.textsize(watermark_text, font=font)
# 计算水印位置(在图像右下角)
x = width - text_width - 10
y = height - text_height - 10
# 添加水印文本到水印图像
draw.text((x, y), watermark_text, font=font, fill=(255, 255, 255, 128))
# 合并原始图像和水印图像
watermarked_image = Image.alpha_composite(image, watermark)
# 保存临时水印图像到内存
watermarked_image_io = BytesIO()
watermarked_image.save(watermarked_image_io, format='PNG')
watermarked_image_io.seek(0)
return watermarked_image_io
在你的模板文件中,加载watermark
模板标签:
{% load watermark %}
在需要显示图像的地方,使用add_watermark
过滤器来添加水印图像或版权文本: