我正在尝试通过此算法使用PIL(枕头)向图像添加水印
def watermark_image_with_text(filename):
text = 'Watermark'
color = 'blue'
fontfamily = 'arial.ttf'
image = Image.open(filename).convert('RGBA')
imageWatermark = Image.new('RGBA', image.size, (255, 255, 255, 0))
draw = ImageDraw.Draw(imageWatermark)
width, height = image.size
font = ImageFont.truetype(fontfamily, int(height / 20))
textWidth, textHeight = draw.textsize(text, font)
x = width / 5
y = height / 6
draw.text((x, y), text, color, font)
my_img = Image.alpha_composite(image, imageWatermark)
my_img.save('water_' + filename.name)
return 'water_' + filename.name
对于PNG文件效果很好,但不会将水印应用于其他文件格式的图像,例如JPG,JPEG,TIF等。 有人可以建议一种将水印应用于所有文件格式的图像的通用方法
cannot write mode RGBA as JPEG
答案 0 :(得分:0)
错误是:
无法将RGBA模式写入JPEG
解决方案很简单。保存前将图像转换回RGB模式。
my_img.convert('RGB').save('water_' + filename.name)
发生这种情况是因为JPEG专为照片而设计。因此,它不支持透明性(照片不透明)。您必须明确丢弃透明度数据才能保存JPEG。