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,图片,水印
0
投稿

猜你喜欢

  • asp如何实现对Session 数组的定义和调用?

    2010-05-18 18:40:00
  • SQL Server索引管理的六大铁律

    2009-03-25 14:05:00
  • python实现线性回归算法

    2021-04-11 12:36:48
  • python版百度语音识别功能

    2023-02-28 09:56:34
  • php简单获取复选框值的方法

    2023-11-15 20:57:28
  • 详解python字符串驻留技术

    2023-09-25 21:49:25
  • Golang爬虫框架colly使用浅析

    2024-02-06 23:28:06
  • 关于vue中hash和history的区别与使用图文详解

    2024-05-13 09:14:31
  • Python使用pycharm导入pymysql教程

    2024-01-17 22:47:49
  • Python二进制数据结构Struct的具体使用

    2022-07-10 00:01:59
  • python 实现数组list 添加、修改、删除的方法

    2021-10-21 16:27:34
  • MYSQL删除重复数据的简单方法

    2024-01-20 17:00:21
  • js的压缩及jquery压缩探讨(提高页面加载性能/保护劳动成果)

    2024-04-16 09:23:41
  • SQL语句实现删除重复记录并只保留一条

    2024-01-13 21:19:23
  • 为SQL Server数据库传数组参数的变通办法

    2009-10-23 09:26:00
  • JavaScript与JQUERY获取元素的宽、高和位置

    2024-04-19 10:18:56
  • Python获取本机所有网卡ip,掩码和广播地址实例代码

    2021-06-26 20:32:17
  • Pycharm无法打开双击没反应的问题及解决方案

    2021-09-06 07:34:30
  • mysql-joins具体用法说明

    2024-01-19 10:32:19
  • vue中的stylus及stylus-loader版本问题

    2023-07-02 16:32:20
  • asp之家 网络编程 m.aspxhome.com