时间:2021-05-22
女友让我给她论文的图片上加上字母序号,本来觉得是个很简单的事情,但那个白底黑字的圆圈序号却难住了我, 试了几个常用的软件,都不行。
后来用 PS + 动作,倒是能搞出来,不过也不容易,正好那天没搞完,于是拿回自己家做,但我的电脑上又没有 PS, 所以就用 python 实现了。
效果图
这里用的图片全是 240X240 的,按文件名的首字母作为序号,PIL 虽然可以计算文字的尺寸,但类似 D 这样的字符依然不能处于圆圈的正中,所以还对个别字符做了偏移设置,本来想用 aggdraw 画圆圈的,能平滑 一些,不过安装了好几次,都以失败告终,最终放弃。
#!/usr/bin/env python#-*- coding: utf-8 -*-import os, sys, fnmatchimport Image, ImageDraw, ImageFontdef 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 <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)声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
今天写Python程序上传图片需要用到PIL库,于是到http:///products/pil/#pil117[root@lee~]#tar-xfImaging
PILvsPillowPIL:PythonImagingLibrary,是python的图像处理库。由于PIL不兼容setuptools,再加上更新缓慢等因素,
python的PIL库简直好用的不得了,PIL下面的Image库更是封装了很多对图片处理的函数,关于Image库的介绍和使用,看这里:http://effbot
程序思路:此次程序主要是利用PIL(PythonImageLibraty)这库,来进行图片的处理。PIL是一个功能非常强大的python图像处理标准库,但由于P
本文实例讲述了python通过pil模块将raw图片转换成png图片的方法。分享给大家供大家参考。具体分析如下:python通过pil模块将raw图片转换成pn