最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Python中用PIL库批量给图片加上序号的教程

来源:动视网 责编:小采 时间:2020-11-27 14:41:41
文档

Python中用PIL库批量给图片加上序号的教程

Python中用PIL库批量给图片加上序号的教程:女友让我给她论文的图片上加上字母序号,本来觉得是个很简单的事情,但那个白底黑字的圆圈序号却难住了我, 试了几个常用的软件,都不行。 后来用 PS + 动作,倒是能搞出来,不过也不容易,正好那天没搞完,于是拿回自己家做,但我的电脑上又没有 PS, 所以
推荐度:
导读Python中用PIL库批量给图片加上序号的教程:女友让我给她论文的图片上加上字母序号,本来觉得是个很简单的事情,但那个白底黑字的圆圈序号却难住了我, 试了几个常用的软件,都不行。 后来用 PS + 动作,倒是能搞出来,不过也不容易,正好那天没搞完,于是拿回自己家做,但我的电脑上又没有 PS, 所以
 女友让我给她论文的图片上加上字母序号,本来觉得是个很简单的事情,但那个白底黑字的圆圈序号却难住了我, 试了几个常用的软件,都不行。

后来用 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)

文档

Python中用PIL库批量给图片加上序号的教程

Python中用PIL库批量给图片加上序号的教程:女友让我给她论文的图片上加上字母序号,本来觉得是个很简单的事情,但那个白底黑字的圆圈序号却难住了我, 试了几个常用的软件,都不行。 后来用 PS + 动作,倒是能搞出来,不过也不容易,正好那天没搞完,于是拿回自己家做,但我的电脑上又没有 PS, 所以
推荐度:
标签: 图片 教程 图片上
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top