基于python使用Pillow做动态图在图中生成二维码以及图像处理
作者:车厘子@ 发布时间:2022-12-29 16:33:03
标签:python,Pillow,动态图,图像,处理
1.什么是Pillow
首先我们需要了解一下PIL
(Python Imaging Library),它是Python2中非常强大的图像处理标准库,但只支持到Python2.7。Pillow是在PIL的基础上创建了兼容的版本,支持最新Python 3.x,又加入了许多新特性。
安装:
pip install pillow
其中Image
是pillow
库的一个常用的模块,提供了很多图片处理的方法。
2.pillow图像处理的简单使用
图片信息显示
from PIL import Image # 操作图片的类型
# 加载图片
image = Image.open('test1.jpg')
# 打开图片
# image.show()
# 查看图像大小(宽度,高度)(6621, 4414)
print(image.size)
# # 获取模式
print(image.mode) # RGB
#
# # 显示的文件的格式 JPEG
print(image.format)
#
# # 图片的详细信息{'jfif': 257, nsity': (72, 72......),
print(image.info)
#
# # 保存为另一张图片(可以更改图片的格式)
image.save('test2.bmp')
修改图片尺寸
from PIL import Image, ImageFilter
# 读取图片
image = Image.open('test.jpg')
print(image.size)
# 修改图片的尺寸,以像素为单位)以二元组表示:(宽度,高度)
image1 = image.resize((image.size[0]//3, image.size[1]//3))
#
image1.show()
# #
# 保存下来
image1.save('test.jpg')
裁剪旋转图片
from PIL import Image, ImageFilter
# 读取图片
image = Image.open('test1.jpg')
# 裁剪图片
# 设置一个边缘间距[left, upper, right, lower] 左上角和右下角
image1 = image.crop(box=(0, 0, 2000, 2000)) # 600 * 336
image1.show()
# 图片旋转
image2 = image.rotate(45)
image2.show()
为图片添加水印
可以为一张图片加上二维码:
from PIL import Image
# 读取图片
image = Image.open('test.jpg')
# 读取粘贴的图片
paste_image = Image.open('erweima.jpg')
如果需要粘贴的图片较大,可以通过resize()修改一下尺寸
image.paste(paste_image) # 默认把图片粘贴到左上角
image.show()
from PIL import Image
# 读取图片
image = Image.open('test.jpg')
# 读取粘贴的图片
paste_image = Image.open('erweima.jpg')
# 也可以指定需要粘贴的位置 设置二维码位置为右下角
position = (image.size[0] - paste_image.size[0], image.size[1] - paste_image.size[1])
image.paste(paste_image,position)
image.show()
image.save("syzp.jpg")
生成gif图片
from PIL import Image
images = []
for i in range(5):
im = Image.open('mkgif/{}.png'.format(i + 1))
images.append(im)
images[0].save("test.gif", save_all=True, loop=True, append_images=images[1:], duration=500)
上面是pillow
的一些简单使用感兴趣的铁汁萌可以自己动手试试看哦!
来源:https://blog.csdn.net/L010409/article/details/122603025


猜你喜欢
- 问题最近,在用SSH框架完成一个实践项目时,碰到了一个莫名其妙的Bug困扰了我好久,最后终于解决,记录如下。问题:同学在测试系统的时候突然发
- Angular中根据适用场景定义了很多生命周期函数,其本质上是事件的响应函数,其中最常用的就是ngOnInit。但在TypeScript或E
- Python是什么Python(大蟒蛇)是一门解释型、面向对象、带有动态语义的高级程序设计语言。Python 是一门有条理的和强大的面向对象
- <?php//php需要开启ssl(OpenSSL)支持$apnsCert = "ck.
- 这篇文章主要介绍了Python2和Python3中@abstractmethod使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工
- 本节内容0、列表常用功能汇总1、定义列表2、访问列表中的元素3、切片4、追加5、插入6、修改7、拷贝8、删除9、扩展10、统计11、翻转12
- 最近的工作中涉及到大量的ajax操作,本来该后台做的事也要我来做了.而现在使用的ajax函数是一个后台人员封装的—-但他又是基于jquery
- if (context.Request.UserAgent.ToLower().IndexOf(&qu
- 因为比较简单,我就不说什么了。一看就明白的!1.sql防注入函数Function ChkStr(InString) &
- 前言酷狗、网抑云和 QQ 音乐都有桌面歌词功能,这篇博客也将使用 pyqt 实现桌面歌词功能,效果如下图所示:代码实现桌面歌词部件 
- 特征降维0维 标量1维 向量2维 矩阵概念降维是指在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关&
- osc的rss不是全文输出的,不开心,所以就有了python抓取osc最新博客生成Rss# -*- coding: utf-8 -*-fro
- 基于 Vue 技术栈的你如果需要选用一种移动端跨平台框架,是 Weex?React-Native?还是Flutter? 无疑,相对于后两者,
- 本文实例讲述了Sanic框架Cookies操作。分享给大家供大家参考,具体如下:简介Sanic是一个类似Flask的Python 3.5+
- 今天在使用MySQL时却不知如何处理,插入记录后不知怎样获得刚刚插入的id,查过文档后发现了select last_insert_id(),
- 这个是作者自己封装的一个钉钉机器人的包,目前只支持发文本格式、链接格式、markdown格式的消息,我们可以在很多场景用到这个,比如告警通知
- Python中的模块(.py文件)在创建之初会自动加载一些内建变量,__name__就是其中之一。Python模块中通常会定义很多变量和函数
- 对于编译型的语言,比如C#中的一个.cs文件,Java中的一个.java或者编译后的.class文件可以认为是一个模块(但常常不表述为模块)
- 在IE7还不支持counter 和increment 属性之前,我从来没有用过它们,也从来没有使用过:before 伪元素和content
- 前言:array.map() 是一个非常有用的映射函数:它接收一个数组和一个映射函数,然后返回一个新的映射数组。然而,有一个替代 array