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


Posted in Python onSeptember 14, 2020

一、背景

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

二、实现

于是就想实现一个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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用rsa加密算法模块模拟新浪微博登录
Jan 22 Python
python定时器使用示例分享
Feb 16 Python
在Django的视图(View)外使用Session的方法
Jul 23 Python
利用python求相邻数的方法示例
Aug 18 Python
python虚拟环境virtualenv的使用教程
Oct 20 Python
python邮件发送smtplib使用详解
Jun 16 Python
python实现简单图片物体标注工具
Mar 18 Python
Python实例方法、类方法、静态方法的区别与作用详解
Mar 25 Python
Python实现的文轩网爬虫完整示例
May 16 Python
Python生成词云的实现代码
Jan 14 Python
K最近邻算法(KNN)---sklearn+python实现方式
Feb 24 Python
详解Python利用configparser对配置文件进行读写操作
Nov 03 Python
python/golang实现循环链表的示例代码
Sep 14 #Python
python实现canny边缘检测
Sep 14 #Python
Python gevent协程切换实现详解
Sep 14 #Python
通过实例了解python__slots__使用方法
Sep 14 #Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
Sep 14 #Python
详解python实现可视化的MD5、sha256哈希加密小工具
Sep 14 #Python
Python利用pip安装tar.gz格式的离线资源包
Sep 14 #Python
You might like
PHP判断是否有Get参数的方法
2014/05/05 PHP
PHP实现远程下载文件到本地
2015/05/17 PHP
使用PHP生成图片的缩略图的方法
2015/08/18 PHP
PHP格式化MYSQL返回float类型的方法
2016/03/30 PHP
PHP实现Unicode编码相互转换的方法示例
2020/11/17 PHP
PHP实现多图上传和单图上传功能
2018/05/17 PHP
JQuery EasyUI 对话框的使用方法
2010/10/24 Javascript
js加强的经典分页实例
2013/03/15 Javascript
JS实现网页每隔3秒弹出一次对话框的方法
2015/11/09 Javascript
从vue基础开始创建一个简单的增删改查的实例代码(推荐)
2018/02/11 Javascript
angular2模块和共享模块详解
2018/04/08 Javascript
一个Vue页面的内存泄露分析详解
2018/06/25 Javascript
vue权限路由实现的方法示例总结
2018/07/29 Javascript
vue2.0实现的tab标签切换效果(内容可自定义)示例
2019/02/11 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
2019/10/16 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
2020/09/22 Javascript
python处理“
2019/06/10 Python
python语言基本语句用法总结
2019/06/11 Python
Django框架视图介绍与使用详解
2019/07/18 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
PyTorch中的padding(边缘填充)操作方式
2020/01/03 Python
Django框架models使用group by详解
2020/03/11 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
2020/03/12 Python
2020最新pycharm汉化安装(python工程狮亲测有效)
2020/04/26 Python
python主要用于哪些方向
2020/07/05 Python
用python计算文件的MD5值
2020/12/23 Python
外语专业毕业生个人的自荐信
2013/11/19 职场文书
个人求职信范文分享
2014/01/06 职场文书
毕业证丢失证明
2014/01/15 职场文书
黄山导游词
2015/01/31 职场文书
教师个人师德总结
2015/02/06 职场文书
班级管理经验交流材料
2015/11/02 职场文书
python如何在word中存储本地图片
2021/04/07 Python
你真的了解PHP中的引用符号(&)吗
2021/05/12 PHP
Python进行区间取值案例讲解
2021/08/02 Python
OpenCV实现常见的四种图像几何变换
2022/04/01 Python