后來用 PS + 動作,倒是能搞出來,不過也不容易,正好那天沒搞完,于是拿回自己家做,但我的電腦上又沒有 PS, 所以就用 python 實現了。
效果圖
這里用的圖片全是 240X240 的,按文件名的首字母作為序號,PIL 雖然可以計算文字的尺寸,但類似 D 這樣的字符依然不能處于圓圈的正中,所以還對個別字符做了偏移設置,本來想用 aggdraw 畫圓圈的,能平滑 一些,不過安裝了好幾次,都以失敗告終,最終放棄。
#!/usr/bin/env python #-*- coding: utf-8 -*- import os, sys, fnmatch import Image, ImageDraw, ImageFont def process_picture(filename): seq = os.path.split(filename)[-1][0].upper() img = Image.open(os.path.join(input_dir, filename)) draw = ImageDraw.Draw(img) # 在右下角畫白底黑框圓圈 draw.ellipse((215, 215, 235, 235), outline='black', fill='white') # 將字母序號寫入到圓圈內 font = ImageFont.truetype('fonts/Times New Roman.ttf', 20) # 計算文字居中的位置 text_size = draw.textsize(seq, font) x = (20 / 2) - (text_size[0] / 2) y = (20 / 2) - (text_size[1] / 2) # 字母偏移量 offsets = {'A': 1, 'B': 1, 'E': 1, 'D': 2} offset = offsets.get(seq, 0) draw.text((215 + x + offset, 215 + y), seq, font=font, fill='black') # save image img.save(os.path.join(output_dir, filename), 'JPEG') if __name__ == '__main__': if len(sys.argv) < 3: print 'Usage: python drawseq.py' sys.exit(1) input_dir, output_dir = sys.argv[1:3] os.path.exists(output_dir) or os.makedirs(output_dir) for filename in os.listdir(input_dir): if fnmatch.fnmatch(filename.lower(), '*.jpg'): process_picture(filename)
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com