当前位置: 首页 > 计算机二级 > 计算机二级学习教程 > Python基于pillow库实现生成图片水印

Python基于pillow库实现生成图片水印

更新时间:2020-09-28 14:34:02 来源:环球网校 浏览54 收藏16
摘要 备战计算机等级考试的小伙伴就像种庄稼的人一样,一拨人收获了,新的一拨人又开始播种了。近几年来随着二级Python的火爆,参加二级Python的人也是越来越多,所以环球网校小编整理了Python基于pillow库实现生成图片水印,希望对你有所帮助,更多内容敬请关注环球网校。

Python基于pillow库实现生成图片水印

一、背景

平时工作中经常需要使用各种尺寸、格式的图片来做测试,每次从百度或者谷歌找图都非常麻烦,于是就想作为一个程序员怎么能被这个问题影响效率呢,一切程序可以做的事情都应该用程勋来做并提升效率,这才是我们编程的意义所在。

二、实现

于是就想实现一个web版的图片生成器,填颜色、尺寸、格式就可以生成指定的图片,Python的图像库肯定首选pillow,实现起来很简单,所以就不详细解释了,直接上代码:

1def generate_image(static_dir, image_type, width, height, color): print(static_dir, image_type, width, height, color)

2

3mode = 'RGB'

4 width = int(width)

5height = int(height)

6

color_tuple = ImageColor.getcolor(color, mode)

7

8

9

image = Image.new(mode, (width, height), color_tuple)

10

11image_dir = os.path.join(static_dir, 'image')

12image_name = '%sx%s_%s.%s' % (width, height, int(time.time()), image_type)

13

image_path = os.path.join(image_dir, image_name)

14

15

16font = ImageFont.truetype('./font/consola.ttf', 96) draw = ImageDraw.Draw(image)

17

18 mark_content = '{width}x{height}'.format(width=width, height=height)

19draw.text((60*i + 10, 10), ch, font=font, fill=rndColor())

20 for i, ch in enumerate(mark_content):

21image.save(image_path)

22

23print('image_path:%s' % (image_path))

24 return image_path

这个就是核心的生成图片的逻辑,其中稍微费了点时间的是水印的生成,这里添加水印的用意是为了在图片上显示图片的尺寸,方便使用者直观的看到该图片的尺寸,其中需要使用到ImageDraw.text()方法,这里需要注意的是要根据你的字体大小设置合适的字间距,我是通过多次调整尝试的,最终得到一个自己满意的效果。

另外,关于字体名字,默认在不同平台下会去不同的目录查找该名字的字体,Windows下是在c://windows/fonts/目录下,Linux是在/usr/share/fonts目录下,这里为了避免后续部署时不同电脑上字体不同导致的问题,我直接把字体文件放在代码库中了,所以使用的是一个相对路径。

以上就是“Python基于pillow库实现生成图片水印”相关内容,小伙伴们快来了解一下吧。另外,大家可通过环球网校“ 免费预约短信提醒”及时获知2020年9月全国计算机等级考试查分时间!环球网校友情提示:为方便更多小伙伴备考,环球网校特地为您准备了计算机二级复习资料,如有需要请点击文章下方“免费下载>>>计算机二级考试历年真题和答案”下载学习。

编辑推荐

分享到: 编辑:环球网校

资料下载 精选课程 老师直播 真题练习

计算机二级资格查询

计算机二级历年真题下载 更多

计算机二级每日一练 打卡日历

0天
累计打卡
0人
打卡人数
去打卡

预计用时3分钟

计算机二级各地入口
环球网校移动课堂APP 直播、听课。职达未来!

安卓版

下载

iPhone版

下载

返回顶部