Python中用PIL庫批量給圖片加上序號的教程
女友讓我給她論文的圖片上加上字母序號,本來覺得是個很簡單的事情,但那個白底黑字的圓圈序號卻難住了我, 試了幾個常用的軟件,都不行。
后來用 PS + 動作,倒是能搞出來,不過也不容易,正好那天沒搞完,于是拿回自己家做,但我的電腦上又沒有 PS, 所以就用 python 實(shí)現(xiàn)了。
效果圖
這里用的圖片全是 240X240 的,按文件名的首字母作為序號,PIL 雖然可以計(jì)算文字的尺寸,但類似 D 這樣的字符依然不能處于圓圈的正中,所以還對個別字符做了偏移設(shè)置,本來想用 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') # 將字母序號寫入到圓圈內(nèi) font = ImageFont.truetype('fonts/Times New Roman.ttf', 20) # 計(jì)算文字居中的位置 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 <input_dir> <output_dir>' 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)
相關(guān)文章
Python 實(shí)現(xiàn)自動獲取種子磁力鏈接方式
今天小編就為大家分享一篇Python 實(shí)現(xiàn)自動獲取種子磁力鏈接方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01Python使用ThreadPoolExecutor一次開啟多個線程
通過使用ThreadPoolExecutor,您可以同時開啟多個線程,從而提高程序的并發(fā)性能,本文就來介紹一下Python使用ThreadPoolExecutor一次開啟多個線程,感興趣的可以了解一下2023-11-11Python 實(shí)現(xiàn)圖片色彩轉(zhuǎn)換案例
我們在看動漫、影視作品中,當(dāng)人物在回憶過程中,體現(xiàn)出來的畫面一般都是黑白或者褐色的。本文將提供將圖片色彩轉(zhuǎn)為黑白或者褐色風(fēng)格的案例詳解,感興趣的小伙伴可以了解一下。2021-11-11python基于mysql實(shí)現(xiàn)的簡單隊(duì)列以及跨進(jìn)程鎖實(shí)例詳解
這篇文章主要介紹了python基于mysql實(shí)現(xiàn)的簡單隊(duì)列以及跨進(jìn)程鎖,需要的朋友可以參考下2014-07-07Python數(shù)據(jù)解析bs4庫使用BeautifulSoup方法示例
這篇文章主要為大家介紹了Python數(shù)據(jù)解析bs4庫使用BeautifulSoup方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08python 實(shí)現(xiàn)圖與圖之間的間距調(diào)整subplots_adjust
這篇文章主要介紹了python 實(shí)現(xiàn)圖與圖之間的間距調(diào)整subplots_adjust,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05