公司有人让给图片批量加个黑边和标题,省得在PS里一张一张的麻烦处理,一开始她也给我个PS的javascript的脚本,但不知怎么老是报错,说是找不到javascript,于是自己只能想办法,在另一位同事的帮助下,用python的pillow,顺利实现其功能,这里贴出来代码,方便以后的使用。
代码如下:
from PIL import Image, ImageFont, ImageDraw
import glob, os
def processImage(path):
content, ext = os.path.splitext(os.path.basename(path))
# size = 1920, 1080
image1 = Image.new("RGB", (1920, 1080))
image2 = Image.open(path)
image2 = image2.resize((1920, 872), )
# image.thumbnail(size)
draw = ImageDraw.Draw(image1)
# use a truetype font
font = ImageFont.truetype("arial.ttf", 50)
draw.text((100, 20), content, font = font)
bw, bh = image1.size
lw, lh = image2.size
image1.paste(image2, (bw - lw, (bh - lh)/2))
path = os.path.split(path)
# image3 = Image.composite(image1, image2, "L")
newpath = os.path.join(dir, "composite").replace('\\', '/')
if not os.path.exists(newpath):
os.mkdir(newpath)
_path = os.path.join(newpath, '%s%s'%(content, "_merge.jpg"))
image1.save(_path.replace('\\', '/'), "JPEG")
print 'Process image %s'%content
if __name__ == '__main__':
dir = os.path.split(__file__)[0]
originPic = os.path.join(dir, '*.jpg').replace('\\', '/')
images = glob.glob(originPic)
if not images: raise RuntimeError, 'No jpeg files'
for path in images:
processImage(path)
最终效果如下:
其他功能可以参考这个博客的内容:http://blog.csdn.net/orangleliu/article/details/43529319