处于某些业务需求需要对一些特定的图片增加水印,于是去了解了PIL这个库,可以完美的解决这个问题
from PIL import Image, ImageDraw, ImageFont
imageFile = "./image/two.jpg"
imageInfo = Image.open(imageFile)
fontOne = ImageFont.truetype("C:\Windows\Fonts\simfang.ttf", 100)
fontTwo = ImageFont.truetype("C:\Windows\Fonts\simfang.ttf", 100)
draw = ImageDraw.Draw(imageInfo)
print(imageInfo.size)
draw.text((imageInfo.size[0] / 2, imageInfo.size[1] / 2), u"这是一个测试图片", fill=(255, 0, 0), font=fontOne)
draw.text((imageInfo.size[0] / 2, imageInfo.size[1] / 2 + 300), u"等会去看电影", fill=(134, 153, 153), font=fontOne)
imageInfo.show()
# imageInfo.save(r"./image/target01.JPG")
print("success")
代码很简单,下面具体讲讲上面每个方法的使用以及参数的意义:
from PIL import Image, ImageDraw, ImageFont # 从PIL中导包
imageFile
:需要添加文字的图片地址(可以是相对地址也可以是绝对地址)
imageInfo = Image.open(imageFile)
:使用
image.open()
打开图像
fontOne = ImageFont.truetype("C:\Windows\Fonts\simfang.ttf", 100) # 水印使用系统字体
fontTwo = ImageFont.truetype("C:\Windows\Fonts\simfang.ttf", 100) # 水印使用系统字体
使用
draw = ImageDraw.Draw(imageInfo)
实例化一个可写对象
draw.text((imageInfo.size[0] / 2, imageInfo.size[1] / 2), u"这是一个测试图片", fill=(255, 0, 0), font=fontOne) # 水印加载的位置
draw.text((imageInfo.size[0] / 2, imageInfo.size[1] / 2 + 300), u"等会去看电影", fill=(134, 153, 153), font=fontOne)
-
xy: 表示文字写入图片中的位置(注意:这里的坐标需为一个元组)
-
text: 加到图片上的文字
-
fill: 水印文字的颜色(范围:0-255,0-255,0-255)
-
font: 水印使用的自已
imageInfo.show(): 预览图片 imageInfo.save(r"./image/target01.JPG"):保存加入水印的图片
更多关于PIL库的使用参照PIL的用法