📜  Python Pillow – 创建水印

📅  最后修改于: 2022-05-13 01:54:29             🧑  作者: Mango

Python Pillow – 创建水印

在本文中,我们将看到如何使用Python的 Pillow 库创建水印。 Pillow 是一个Python图像库 (PIL),用于处理图像和处理不同格式的图像,如('jpeg'、'png'、'gif'、'tiff' 等)。您可以使用枕头库进行各种图像处理,例如调整大小、创建水印、旋转图像、合并各种图像、模糊图像等。 PIL 在照片查看器中显示图像。

安装:

要安装库,请在命令提示符中运行以下命令。

python -m pip install pip

或者

python -m pip install pillow

如果你的设备中已经安装了pip和pillow,系统会提示“Requirement already meet:”



有两种类型的水印:

  1. 文字水印,
  2. 图片水印。

文字水印

它是一种文本文档版权保护的方法。在图像中,我们可以在不同字体和格式的图像上放置一些简单的自定义文本。

第 1 步:导入所有库

Python3
# importing the library
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np


Python3
image = Image.open("puppy.jpg")
  
# this open the photo viewer
image.show() 
plt.imshow(image)


Python
# 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)


Python3
# 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)


Python
# importing the library
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np


Python3
# read image
image=Image.open("lion.jpg")
image.show() 
plt.imshow(image)


Python3
# 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)


Python3
# 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)


第 2 步:使用照片查看器打开图像。

蟒蛇3



image = Image.open("puppy.jpg")
  
# this open the photo viewer
image.show() 
plt.imshow(image)

输出:

第三步:文字水印制作

Python

# 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)

输出:

以下是基于上述方法的完整程序:

蟒蛇3

# 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)

输出:



解释:

  1. 导入所有用于图像处理的库。
  2. 使用 Image.open() 打开图像,使用 image.show() 打开照片查看器。
  3. plt.imshow() 用于在 IDE 中打开图像。
  4. 制作图像的副本以创建水印图像。
  5. 使用 ImageDraw 使图像可编辑。
  6. 使用 ImageFont 指定字体和字体大小。
  7. 创建 ImageDraw 模块的 draw 方法,并在函数中将图像作为参数传递。
  8. 使用 ImageFont 模块函数truetype() 创建字体,因为它需要两个参数(“字体类型”,大小)
  9. 然后使用绘制对象的 text()函数并传递 4 个参数(文本起始点、“示例文本”、颜色、ImageFont 对象)。
  10. plt.Imshow(watermark_image) 用于输出。

图片水印

它是一种用于将图像粘贴到另一个图像上的方法。它需要两个参数,一个是要粘贴的图像,另一个是要粘贴图像的位置。

步骤 1:导入库

Python

# importing the library
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np

第 2 步:使用照片查看器打开图像

蟒蛇3

# 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)



以下是基于上述方法的完整程序:

蟒蛇3

# 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)

输出:

分步说明:

  1. 导入所有用于图像处理的库。
  2. 使用 open() 打开图像,使用 show() 打开照片查看器。
  3. plt.imshow() 用于在 IDE 中打开图像。
  4. 使用 copy() 模块复制crop_image中的图像
  5. Crop_image.thumbnail(size) -thumbnail 用于保持纵横比完整。
  6. copy_image=image1.copy() 用于保留我们将粘贴图像的图像的基础。
  7. paste() 用于将图像粘贴到 copy_image 中,使用的 2 个参数是 (crop_image, 和要粘贴的位置)。
  8. plt.imshow() 显示图像。