Python基于pillow库实现生成图片水印
作者:冷冰若水 时间:2021-08-01 10:45:38
一、背景
平时工作中经常需要使用各种尺寸、格式的图片来做测试,每次从百度或者谷歌找图都非常麻烦,于是就想作为一个程序员怎么能被这个问题影响效率呢,一切程序可以做的事情都应该用程勋来做并提升效率,这才是我们编程的意义所在。
二、实现
于是就想实现一个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
标签:Python,pillow,图片,水印
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
如何制作K线图?
2010-06-29 17:25:00
SQLServer 全文检索(full-text)语法
2011-12-01 10:38:22
定义列表: DL DT DD
2009-05-06 13:08:00
php使用curl抓取qq空间的访客信息示例
2023-10-30 05:50:32
MySQL数据库优化经验详谈
2009-12-15 10:34:00
HTTP状态码
2009-09-21 12:46:00
aspjpeg组件asp代码实例使用详解
2008-12-14 10:33:00
最近写的一个asp缓存函数
2008-11-25 14:07:00
百万级asp分页存储过程代码(ver2.0)
2007-12-17 13:13:00
ASP UTF-8页面乱码+GB2312转UTF-8 +生成UTF-8格式的文件(编码)
2011-04-19 11:15:00
分类与类型的问题
2008-09-12 13:10:00
![](https://img.aspxhome.com/file/UploadPic/20089/12/2008912131610841s.jpg)
YUI学习笔记(4)
2009-03-10 18:25:00
如何让用户再次访问我的网站时不需再提交相关信息?
2010-05-16 15:05:00
html网页颜色表大全(苏昱)
2008-01-01 15:52:00
![](https://img.aspxhome.com/file/UploadPic/20081/1/200811162311168s.gif)
SQL 判断给定日期值(或时间段)所在星期的星期一和星期天的日期
2011-10-24 20:14:52
mysql中从字段中URL提取域名信息
2009-05-25 10:35:00
10个精致的导航菜单欣赏及点评
2011-09-22 20:33:44
解决GOPATH在GOLAND中的坑
2023-07-12 23:46:16
![](https://img.aspxhome.com/file/2023/0/97170_0s.jpg)
100%全屏布局设计
2009-05-15 12:24:00
php计算给定日期所在周的开始日期和结束日期示例
2023-10-11 12:49:12