之前写菲律宾游记,想给自己的照片批量打上水印,首先想到的就是用Python实现给图片加文字,然后写个循环。
做过图像识别的,应该知道OpenCV,其中cv2.putText()函数,就可以实现在图片上加文字,非常简单。
putText(img, text, org, fontFace, fontScale, color, thickness, lineType, bottomLeftOrigin)
参数解释:
img:需要添加文字的图片。
text:要加的文字内容。
org:文字的位置坐标。
fontFace:字体类型(可选择字体有限,可设置斜体)。
fontScale:字体大小。
color:字体颜色。
thickness:字体粗细。
lineType:线型。
bottomLeftOrigin:默认值为false,图片数据原点在左上角。
但putText()有个问题,不能添加中文文字,也不能指定字体,而PIL(Python Image Library)可以解决这个问题。
Image模块
Image是PIL中的核心模块,实现对图片的基础操作。
Image中的函数:
-
Image. open(path):打开现成的图片,该图片在path所示的路径中。
-
Image. new(mode, size, color):创建新的图片文件,color默认为黑色。
Image对象的属性:
-
image.format:查看图像的格式,常见的有JPG、PNG等。
-
image.mode:查看图像的模式。常用的例如RGB,3x8位像素,为真彩色;RGBA,4x8位像素,有透明通道的真彩色。
-
image.size:获取图片的尺寸(长×宽),该二元组也表示图片的像素。
import os
import sys
from PIL import Image, ImageFont, ImageDraw
# 读入要打水印的照片
image = Image.open('./input/IMG_1422.jpg')
im_size = image.size
print(image.format)
print(image.mode)
print(im_size)
image.show()
----------------------
[out] JPEG
[out] RGB
[out] (1536, 2048)
原始照片: