Python基于pillow库实现生成图片水印
作者:冷冰若水 发布时间:2021-08-01 10:45:38
标签:Python,pillow,图片,水印
一、背景
平时工作中经常需要使用各种尺寸、格式的图片来做测试,每次从百度或者谷歌找图都非常麻烦,于是就想作为一个程序员怎么能被这个问题影响效率呢,一切程序可以做的事情都应该用程勋来做并提升效率,这才是我们编程的意义所在。
二、实现
于是就想实现一个web版的图片生成器,填颜色、尺寸、格式就可以生成指定的图片,Python的图像库肯定首选pillow,实现起来很简单,所以就不详细解释了,直接上代码:
def generate_image(static_dir, image_type, width, height, color):
print(static_dir, image_type, width, height, color)
mode = 'RGB'
width = int(width)
height = int(height)
color_tuple = ImageColor.getcolor(color, mode)
image = Image.new(mode, (width, height), color_tuple)
image_dir = os.path.join(static_dir, 'image')
image_name = '%sx%s_%s.%s' % (width, height, int(time.time()), image_type)
image_path = os.path.join(image_dir, image_name)
font = ImageFont.truetype('./font/consola.ttf', 96)
draw = ImageDraw.Draw(image)
mark_content = '{width}x{height}'.format(width=width, height=height)
for i, ch in enumerate(mark_content):
draw.text((60*i + 10, 10), ch, font=font, fill=rndColor())
image.save(image_path)
print('image_path:%s' % (image_path))
return image_path
这个就是核心的生成图片的逻辑,其中稍微费了点时间的是水印的生成,这里添加水印的用意是为了在图片上显示图片的尺寸,方便使用者直观的看到该图片的尺寸,其中需要使用到ImageDraw.text()方法,这里需要注意的是要根据你的字体大小设置合适的字间距,我是通过多次调整尝试的,最终得到一个自己满意的效果。
另外,关于字体名字,默认在不同平台下会去不同的目录查找该名字的字体,Windows下是在c://windows/fonts/目录下,Linux是在/usr/share/fonts目录下,这里为了避免后续部署时不同电脑上字体不同导致的问题,我直接把字体文件放在代码库中了,所以使用的是一个相对路径。
三、预览
如果想要预览效果的,可以访问这里:https://nicolerobin.top/image_holder/static/index.html
代码库地址:https://github.com/NicoleRobin/image_holder
来源:https://www.cnblogs.com/lit10050528/p/12381188.html
0
投稿
猜你喜欢
- pillowPillow是PIL的一个派生分支,但如今已经发展成为比PIL本身更具活力的图像处理库。pillow可以说已经取代了PIL,将其
- 被AJAX中DOM的操作郁闷了好几天,今天总算搞明白了,自学就是苦啊,苦的一把鼻涕一把泪的,把教训些出来,给后来者提个醒,老鸟就不要看了。下
- 我就废话不多说了,大家看代码吧!dataset = ["el","tv"]model = [&quo
- 我写过一个外部模块扩展,现在开始看PHP源码中的mysql扩展,它是可以被集成到PHP内部的,所以应该算是内置的扩展了。 该扩展需要用到my
- OpenCV函数原型:cv2.resize(InputArray src, OutputArray dst, Size, fx, fy, i
- 在云计算大行其道的时代,当你要部署一个网站时第一选择肯定是各式各样的云端服务。那么究竟使用什么样的云端服务才能够以最快捷的方式部署一个 AS
- 今天将一个ACC的数据库转换成ms-sql以后发现在使用replace替换语句的时候出现: SQL中函数 replace 的参数 1 的数据
- js也是可以做出狂炫的图形的,恭请超级高手分析。给大家看个例子吧。http://www.p01.org/releases/DHTML_con
- 见下:<form action="./calculation.asp"><input&nbs
- 目录循环加判断retrying我们在程序开发中,经常会需要请求一些外部的接口资源,而且我们不能保证每次请求一定会成功,所以这些涉及到网络请求
- 本文实例讲述了Python使用爬虫抓取美女图片并保存到本地的方法。分享给大家供大家参考,具体如下:图片资源来自于www.qiubaichen
- 1. 实例的背景说明假定一个个人信息系统,需要记录系统中各个人的故乡、居住地、以及到过的城市。数据库设计如下:Models.py 内容如下:
- 我们用下了asp代码简单统计了下载一个文件需要的时间:<%Function DownloadTime(intFileSize
- 字符串操作字符串 + 运算符+运算符用于连接字符串,返回一个由连接在一起的操作数组成的字符串。>>> s = 'a
- 群里有人提出这么一个需求:每天都会传过来一份 Word 文档,里面有多个 Excel 附件,需要把 Excel 内容读取出来。第一反应是使用
- 引言现在已经产生了一种新职业:Prompt Engineer(提示指令工程师),可见 Prompt 是多么重要,且编写不易。ChatGPT的
- 特么的,上次写了一堆,发现,原来下载网易云的歌曲根本不用这么费劲,直接用!http://music.163.com/song/media/o
- 就算我们每天在叫嚷着创新经济,设计救国,我们在生活中也无处不在的看到各种设计庸俗、制作粗劣的海报、店面、户外广告、大胸美女和肌肉 * 交相辉映
- 在为一个客户排除死锁问题时我遇到了一个有趣的包括InnoDB间隙锁的情形。对于一个WHERE子句不匹配任何行的非插入的写操作中,
- 今天有这样得一个需求,如果登陆人是客服的话,会查询订单是'该客服'以及还没有匹配客服的,刚开始想的是直接在sql语句上拼写&