Python Pillow – 创建一个水印
在这篇文章中,我们将看到如何使用Python中的Pillow库来创建一个水印。Pillow是一个Python图像库(PIL),用于操作图像和处理不同格式的图像,如(’jpeg’、’png’、’gif’、’tiff’等)。你可以用Pillow库做各种图像处理,如调整大小、创建水印、旋转图像、合并各种图像、模糊图像等。PIL在照片浏览器中显示图像。
安装:
要安装这个库,在你的命令提示符下运行以下命令。
python -m pip install pip
或者,
python -m pip install pillow
如果你的设备中已经安装了pip和pillow,系统会提到 “已经满足要求:”
有两种类型的水印。
1.文字水印。
2.图像水印。
文字水印
这是一种文本文件版权保护的方法。在一个图像中,我们可以在图像上放置一些简单的自定义文本,并采用不同的字体和格式。
第1步:导入所有库
# importing the library
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
第2步:用图片浏览器打开图片。
image = Image.open("puppy.jpg")
# this open the photo viewer
image.show()
plt.imshow(image)
输出:
第3步:创建文本水印
# text Watermark
from PIL import ImageFont
from PIL import ImageDraw
watermark_image = image.copy()
draw = ImageDraw.Draw(watermark_image)
font = ImageFont.truetype("arial.ttf", 50)
# add watermark
draw.text((0, 0), "puppy",
(0, 0, 0), font=font)
plt.subplot(1, 2, 1)
plt.title("black text")
plt.imshow(watermark_image)
# add watermark
draw.text((0, 0), "puppy",
(255, 255, 255), font=font)
plt.subplot(1, 2, 2)
plt.title("white text")
plt.imshow(watermark_image)
输出:
以下是基于上述方法的完整方案:
# import all the libraries
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
import matplotlib.pyplot as plt
import numpy as np
# image opening
image = Image.open("puppy.jpg")
# this open the photo viewer
image.show()
plt.imshow(image)
# text Watermark
watermark_image = image.copy()
draw = ImageDraw.Draw(watermark_image)
# ("font type",font size)
font = ImageFont.truetype("arial.ttf", 50)
# add Watermark
# (0,0,0)-black color text
draw.text((0, 0), "puppy", (0, 0, 0), font=font)
plt.subplot(1, 2, 1)
plt.title("black text")
plt.imshow(watermark_image)
# add Watermark
# (255,255,255)-White color text
draw.text((0, 0), "puppy", (255, 255, 255), font=font)
plt.subplot(1, 2, 2)
plt.title("white text")
plt.imshow(watermark_image)
输出:
解释:
- 导入所有用于图像处理的库。
- 使用Image.open()来打开图片,使用image.show()来打开照片查看器。
- plt.imshow()用于在IDE中打开图像。
- 为创建水印图像制作一份图像的副本。
- 使用ImageDraw使图像可编辑。
- 使用ImageFont来指定字体和字体大小。
- 创建ImageDraw模块的draw方法,并将图像作为参数传入该函数。
- 使用ImageFont模块的函数truetype()创建一个字体,因为它需要两个参数,即(“字体类型”,大小)
- 然后使用draw对象的text()函数,并传递了4个参数(文本的起始点,”样本文本”,颜色,ImageFont对象)。
- plt.Imshow(watermark_image)进行输出。
图像水印
它是一种用于将图像粘贴到另一个图像上的方法。它需要两个参数,一个是要粘贴的图像,另一个是要粘贴图像的地方。
第1步:导入库
# importing the library
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
第2步:用图片浏览器打开图片
# read image
image=Image.open("lion.jpg")
image.show()
plt.imshow(image)
第3步:创建图像水印
# image watermark
size = (500, 100)
crop_image = image.copy()
crop_image.thumbnail(size)
# add watermark
copied_image = image.copy()
copied_image.paste(crop_image, (500, 200))
plt.imshow(copied_image)
以下是基于上述方法的完整方案:
# import all the libraries
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
# to open the image
image = Image.open("lion.jpg")
# this open the photo viewer
image.show()
plt.imshow(image)
# image watermark
size = (500, 100)
crop_image = image.copy()
# to keep the aspect ration in intact
crop_image.thumbnail(size)
# add watermark
copied_image = image.copy()
# base image
copied_image.paste(crop_image, (500, 200))
# pasted the crop image onto the base image
plt.imshow(copied_image)
输出:
一步一步解释:
- 导入所有用于图像处理的库。
-
使用open()来打开图片,使用show()来打开图片浏览器。
-
plt.imshow()用于在IDE中打开图像。
- 使用copy()模块复制crop_image中的图像。
- Crop_image.thumbnail(size) – 缩略图用于保持长宽比不变。
- copied_image=image1.copy()是用来保持图像的基础,我们将把图像粘贴到上面。
- paste()用于将图像粘贴到复制的图像中,使用的两个参数是(crop_image和要粘贴的位置)。
- plt.imshow()来显示图像。