Python Pillow - 建立水印



什麼是水印?

水印是指疊加在另一張影像、文件或物件上的可識別且通常是透明的影像或文字,用於指示所有權、作者身份或來源。水印通常用於保護智慧財產權和內容,防止未經授權的使用或分發,並提供歸屬資訊。它們服務於以下提到的各種目的:

  • 版權保護 - 藝術家、攝影師和內容創作者經常使用水印來保護他們的智慧財產權,透過在其作品上標記他們的姓名、徽標或版權資訊。這有助於阻止未經授權使用或分發他們的內容。

  • 品牌推廣 - 公司和組織使用水印在其影像或文件上打上他們的徽標、名稱或口號。這增強了他們的品牌標識,並明確了內容的來源。

  • 文件驗證 - 水印可用於官方檔案(如證書)以防止偽造或未經授權的複製。例如,文憑或公證檔案可能帶有水印。

  • 安全 - 在貨幣和其他安全文件中,複雜的且通常是不可見的。水印用於防止偽造。這些水印難以準確複製,從而更容易檢測到假鈔或偽造檔案。

  • 影像歸屬 - 在版權圖片和影像許可的背景下,水印可用於顯示帶有水印的影像預覽。當用戶購買影像時,他們會收到沒有水印的版本。

  • 數字媒體 - 在數字世界中,水印通常用於線上共享的影像和影片以保護內容。它們也可用於給予原始創作者榮譽。

水印可以採用各種形式,例如文字、徽標、圖案甚至嵌入到內容中的不可見資料。它們通常以難以去除的方式放置,而不會影響內容的質量,其目的是提供真實性或所有權的視覺或數字指示。

建立文字水印

現在讓我們探索如何使用 Pillow 庫建立文字水印。在 Pillow 中,沒有直接建立水印的方法,但我們可以使用ImageDraw、ImageFontImage方法來實現。

以下是本章所有示例中使用的輸入影像。

butterfly

示例

在這個示例中,我們使用 Pillow 庫建立了文字Tutorialspoint作為水印。

from PIL import Image, ImageDraw, ImageFont
original_image = Image.open("Images/butterfly.jpg")
draw = ImageDraw.Draw(original_image)
watermark_text = "Tutorialspoint"
font_size = 20
font = ImageFont.truetype("arial.ttf", font_size)  
text_color = (255, 255, 255)  

#White color (RGB)
text_width, text_height = draw.textsize(watermark_text, font)
image_width, image_height = original_image.size
margin = 10  

#Margin from the right and bottom edges
position = (image_width - text_width - margin, image_height - text_height - margin)
draw.text(position, watermark_text, font=font, fill=text_color)
original_image.save("output Image/watermarked_image.png")
original_image.show() 

輸出

watermarked

建立影像水印

之前我們在影像上建立了文字水印,同樣,我們可以使用 Pillow 中可用的ImageDraw、copypaste方法建立影像作為水印。

示例

在這個示例中,我們使用 Pillow 中可用的方法建立了Tutoriaslpoint徽標影像作為水印。

from PIL import Image
original_image = Image.open("Images/butterfly.jpg")
watermark = Image.open("Images/tutorialspoint.png")  
#Use the appropriate image file for your watermark

#Resize the watermark image to a specific width or height
target_width = 200  

#Adjust this to our preferred size
aspect_ratio = float(target_width) / watermark.width
target_height = int(watermark.height * aspect_ratio)
watermark = watermark.resize((target_width, target_height), Image.ANTIALIAS)
watermarked_image = original_image.copy()

#Adjust the position where you want to place the watermark (e.g., bottom right corner)
position = (original_image.width - watermark.width, original_image.height - watermark.height)
watermarked_image.paste(watermark, position, watermark)
watermarked_image.save("output Image/watermarked_image.jpg")
watermarked_image.show()

輸出

watermarked Tutorialspoint
廣告