网上看了不少教程,都没有满意的,不是全用一样的水印,就是大小、位置、分辨率、字体这些都没有介绍。现在的需求是这样:
产品主图需要打上不同价格的水印。 水印是一个简单的图形,扁平图案这种,在上面打上不同的价格。 但问题是不同货号的产品价格不一样。 用 PS 一个个做太烦了。 以前写过代码,现在干美工。基础知识是不用考虑的。 那么问题来了,python 有无好用方便的库。
把货号和对应价格写在 Excel 里。 但是一张透明背景的 png,如何把对应数字合成在上面,有字体要求(大小、字间距、颜色、字体家族),也有位置要求,以及大小,分辨率要求。 合成了价格水印之后,通过水印图片名称和主图图片名称匹配,然后再次合成到主图的某个位置。 以下是思维导图。
1
iConnect 2020-05-11 20:39:11 +08:00 via Android
手写一个也不麻烦:读 Excel,然后 pillow 合成图片。
|
2
AlisaDestiny 2020-05-12 00:12:40 +08:00
就是说根据不同型号生成不同的价格水印,再贴到物品图上把。这也不难啊。手里有锤子还怕没办法处理各种形状的钉子。
|
3
niqiu8 2020-05-12 08:32:27 +08:00 via Android
活动打标??干嘛不用 ps 或者 ai 的变量功能? python 的话 pillow 可以实现
|
4
chaneyccy 2020-05-12 09:18:07 +08:00
没记错的话 PS 批处理也可以实现吧
|
5
cra2y4ngel 2020-05-12 09:35:17 +08:00
from PIL import Image,ImageDraw,ImageFont
im = Image.open('my_pic.png') w, h = im.size watermark = Image.new('RGBA', im.size) # 水印 draw = ImageDraw.Draw(watermark, 'RGBA') # 设置文字大小 font_size = 180 # 设置字体 font_file = "C:\\Windows\\Font\\simsun.ttc" font = ImageFont.truetype(font_file,font_size ) draw.text((0, 0), '这是水印内容', fill="#ff0000", font=font) # 第一个参数:表示文字起始坐标 # 第二个参数:表示写入内容 # fill:表示颜色 # font:字体 # 旋转 45 度 watermark = watermark.rotate(-45, Image.BICUBIC) # 透明的 alpha = watermark.split()[3] alpha = ImageEnhance.Brightness(alpha).enhance(0.7) watermark.putalpha(alpha) # 合成新的图片 n = Image.composite(watermark, im, watermark) n.save('new_watermark.png', 'PNG') |
6
sunmker 2020-05-12 16:46:09 +08:00
使用 ImageMagick 写个小脚本
|