簡體   English   中英

使用 PIL 在 Python 中為圖像添加水印

[英]Adding watermark to Image in Python using PIL

我正在嘗試通過此算法使用 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

錯誤是:

無法將 RGBA 模式寫為 JPEG

解決方法很簡單。 保存前將圖像轉換回 RGB 模式。

my_img.convert('RGB').save('water_' + filename.name)

發生這種情況是因為 JPEG 是專為照片設計的。 因此,它不支持透明度(照片不透明)。 您必須明確丟棄透明度數據才能保存 JPEG。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM