女友让我给她论文的图片上加上字母序号,本来觉得是个很简单的事情,但那个白底黑字的圆圈序号却难住了我, 试了几个常用的软件,都不行。

后来用 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编程界面设置序号,Python中用PIL库批量给图片加上序号的教程相关推荐

  1. 新发的日常小实验——使用python的PIL库批量修改图片尺寸,确保宽和高是4的倍数(Unity、PIL、Pillow、压缩)

    文章目录 一.问题:图片导入Unity被调整成2的N次方 二.设置不转换成2的N次方 三.使用ETC压缩格式,图片宽高必须是4的倍数 四.使用python的PIL库批量修改图片尺寸,确保宽和高是4的倍 ...

  2. Python使用Pillow(PIL)库实现验证码图片

    Python使用Pillow(PIL)库实现验证码图片 Pillow库有很多用途,本文使用Pillow来生成随机的验证码图片. Pillow的用法参考:https://blog.csdn.net/we ...

  3. Python学习记录(一)PIL库对于图像操作方法的简单整理

    Python学习记录(一)PIL库对于图像操作方法的简单整理 首先对PIL库进行一个简单的介绍:Python图像库PIL(Python Image Library)是python的第三方图像处理库,由 ...

  4. 山东python编程培训,Python进入山东省小学教材了

    根据最近火爆朋友圈的一则消息,Python已经进入山东省小学教材.Python这几年的火热,离不开人工智能和机器学习. 已经没有什么能够阻挡Python了.根据国务院<新一代人工智能发展规划的通 ...

  5. 用Python给图片加上序号类的一致水印

    给图片加上序号类的一致水印 from PIL import Image, ImageDraw, ImageFontfor i in range(1,5):im = Image.open('图1{}.p ...

  6. arcgis python编程案例-ArcGIS Python编程案例-电子资料链接

    ArcGIS Python编程案例(1)-Python语言基础 https://www.jianshu.com/p/dd90816d019b ArcGIS Python编程案例(2)-使用ArcPy编 ...

  7. python编程入门电子书-Python编程基础 PDF 原书高质量版

    给大家带来的一篇关于Python入门相关的电子书资源,介绍了关于Python编程基础.Python编程教程方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小6 MB,张健 张良均编写,目前 ...

  8. 大M法的python编程求解和python包求解

    大M法的python编程求解和python包求解 一.大M算法的求解步骤讲解 二.python编程求解 三.利用python包scipy的优化包optimize 四.用excel求解 五.分析结果 一 ...

  9. Python用img2pdf库批量转换图片为PDF文件

    Python用img2pdf库批量转换图片为PDF文件 import os #导入os库 import time #导入时间库生成时间戳 import img2pdf #导入img2pdf库, 安装命 ...

  10. 青少年python编程入门书-青少年Python编程入门——图解Python

    商品详情 书名:青少年Python编程入门--图解Python 定价:69.8 ISBN:9787121395543 作者:傅骞 版次:第1版 出版时间:2020-09 内容提要: 本书介绍pytho ...

最新文章

  1. 【ACL 2020】腾讯AI Lab解读三大前沿方向及入选的20篇论文
  2. 低调!中国北斗核心卫星部署完成,开启“全球时代”!超越GPS指日可待
  3. 连续投影算法_出货量第一,专利300+,极米科技如何成为“投影一哥”?
  4. Python/WSGI 应用快速入门--转
  5. java实现转账功能_如何利用Java代码模拟银行转账这一功能?
  6. 0116互联网新闻 | “DaDa英语”近日完成2.55亿美元D轮融资;腾讯推今年首个手游“闹闹天宫”...
  7. vue项目,cli-3.0项目部署运行报错:Uncaught SyntaxError: Unexpected token
  8. MariaDB 10.4.9 发布,MySQL 分支数据库
  9. python的优点有哪些-Python为何这么火,究竟有哪些优势?
  10. C#部分---arraylist集合、arraylist集合中的object数据转换成int类string类等;间隔时间的表示方法;...
  11. SmartSVN忽略文件与文件夹的设置
  12. 计算机考研408真题和答案
  13. 【点云阅读笔记】Learned Point Cloud Geometry Compression
  14. 国庆必看9大区块链电影!建议收藏!
  15. 如何将pdf中一些特定页提取存储在另一个pdf中
  16. 【vue】mint-ui中navbar下划线不显示的问题
  17. LaTeX 文章排版 列表环境 表格环境
  18. linux who命令功能,Linux who命令详解
  19. java 汉字转拼音工具_java汉字转拼音工具类
  20. 关于数据库报错ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost:3306‘ (10061

热门文章

  1. 微信小程序如何引入moment和lodash
  2. 核心业务9:还款业务实现和首页信息展示的完善
  3. Java代码中Math.pow()具有什么功能呢?
  4. java广告知乎,广告算法2020 – 知乎
  5. Java Excel 打开文件报发现“xx.xlsx”中的部分内容有问题。是否让我们尽量尝试恢复问题解决
  6. MySQL数据库的javaJDBC存储过程;
  7. 关于shortcut icon和icon
  8. Java并发编程78讲--70 第70讲:有哪些解决死锁问题的策略?
  9. Q3财报打出漂亮一仗,科大讯飞就能高枕无忧了?
  10. 1101 Oh, my God!【错排】