首页 > 编程语言 >详解Python图像处理Pillow库

详解Python图像处理Pillow库

时间:2023-07-25 09:12:42浏览次数:32  
标签:Python Image image 保存 jpg 图像处理 图像 Pillow

在Python的图像处理领域,Pillow是一个强大而广泛使用的第三方库。它提供了丰富的图像处理功能,包括打开、保存、调整大小、裁剪、旋转等操作。本文将详细介绍Pillow库的使用方法,并通过代码示例进行讲解,帮助你理解和应用Pillow库进行图像处理。

一、安装和导入Pillow库

在使用Pillow之前,首先需要安装Pillow库。可以使用pip命令进行安装:

pip install Pillow

安装完成后,我们可以使用import语句导入Pillow库:

from PIL import Image

通过导入Image模块,我们可以使用Pillow库提供的图像处理功能。

二、打开和保存图像

  1. 打开图像。使用Pillow库可以轻松打开各种图像格式的文件。我们可以使用open()函数打开图像文件,并将其赋值给一个变量。

代码示例:

from PIL import Image

# 打开图像文件
image = Image.open("image.jpg")

在上面的例子中,我们使用open()函数打开了名为"image.jpg"的图像文件,并将其赋值给image变量。这样就可以在后续的代码中使用image对象进行图像处理。

  1. 保存图像。Pillow库提供了save()方法,可以将处理后的图像保存为不同格式的文件。我们可以指定保存的文件名和保存的格式。

代码示例:

from PIL import Image

# 打开图像文件
image = Image.open("image.jpg")

# 保存图像
image.save("output.png", "PNG")

在上面的例子中,我们使用save()方法将image对象保存为名为"output.png"的PNG格式文件。通过指定不同的格式,我们可以保存图像为JPEG、PNG、BMP等格式。

三、基本图像操作

  1. 调整图像大小。Pillow库提供了resize()方法,可以调整图像的大小。我们可以指定新的宽度和高度,也可以根据比例进行调整。

代码示例:


from PIL import Image

# 打开图像文件
image = Image.open("image.jpg")

# 调整图像大小
new_size = (800, 600)
resized_image = image.resize(new_size)

# 保存调整后的图像
resized_image.save("resized_image.jpg")

在上面的例子中,我们使用resize()方法将图像调整为800x600像素的大小,并将调整后的图像保存为"resized_image.jpg"文件。

  1. 裁剪图像。 Pillow库的crop()方法可以用于裁剪图像。我们可以指定裁剪区域的左上角和右下角坐标。

代码示例:


from PIL import Image

# 打开图像文件
image = Image.open("image.jpg")

# 裁剪图像
box = (100, 100, 500, 400)
cropped_image = image.crop(box)

# 保存裁剪后的图像
cropped_image.save("cropped_image.jpg")

在上面的例子中,我们使用crop()方法裁剪图像,指定了左上角坐标为(100, 100),右下角坐标为(500, 400)。裁剪后的图像被保存为"cropped_image.jpg"文件。

  1. 旋转图像。Pillow库提供了rotate()方法,可以对图像进行旋转操作。我们可以指定旋转角度进行图像旋转。

代码示例:


from PIL import Image

# 打开图像文件
image = Image.open("image.jpg")

# 旋转图像
rotated_image = image.rotate(45)

# 保存旋转后的图像
rotated_image.save("rotated_image.jpg")

在上面的例子中,我们使用rotate()方法将图像顺时针旋转45度,并将旋转后的图像保存为"rotated_image.jpg"文件。

四、图像处理高级功能

  1. 图像缩略图。Pillow库的thumbnail()方法可以生成图像的缩略图。我们可以指定缩略图的最大尺寸。

代码示例:


from PIL import Image

# 打开图像文件
image = Image.open("image.jpg")

# 生成缩略图
thumbnail_size = (200, 200)
image.thumbnail(thumbnail_size)

# 保存缩略图
image.save("thumbnail.jpg")

在上面的例子中,我们使用thumbnail()方法生成200x200像素的缩略图,并将缩略图保存为"thumbnail.jpg"文件。

  1. 添加水印。Pillow库提供了丰富的绘图功能,可以在图像上添加文本、形状等元素,实现水印效果。

代码示例:

from PIL import Image, ImageDraw, ImageFont

# 打开图像文件
image = Image.open("image.jpg")

# 创建绘图对象
draw = ImageDraw.Draw(image)

# 添加水印文本
text = "Watermark"
font = ImageFont.truetype("arial.ttf", 36)
text_size = draw.textsize(text, font)
text_position = (image.width - text_size[0], image.height - text_size[1])
draw.text(text_position, text, fill=(255, 255, 255), font=font)

# 保存带水印的图像
image.save("watermarked_image.jpg")

在上面的例子中,我们使用ImageDraw模块创建了一个绘图对象,并使用text()方法在图像上添加了水印文本。通过指定文本的位置、颜色和字体等参数,我们可以自定义水印效果。

五、总结

本文详细介绍了Python第三方库Pillow的使用。通过导入Pillow库、打开和保存图像、基本图像操作以及图像处理高级功能的代码示例,我们了解了Pillow库的强大功能和灵活性。掌握Pillow库的使用,将使你能够在Python中进行图像处理、生成缩略图、添加水印等操作。希望本文对你理解和应用Pillow库进行图像处理有所帮助。

标签:Python,Image,image,保存,jpg,图像处理,图像,Pillow
From: https://www.cnblogs.com/shiqianlong/p/17578836.html

相关文章

  • GDAL-Python将s57数据转换为GeoJSON
    fromosgeoimportogrimportsubprocessimportglobimportosOGR_S57_OPTIONS="SPLIT_MULTIPOINT=ON,ADD_SOUNDG_DEPTH=ON"defGetAllS57Repertory():S57Path=[]for_fileinglob.glob(('{0}{1}*.000').format(path,os.sep)):......
  • Python入门 - 字符文件读写
    常用操作字符文件本质上还是用二进制方式写出,只是他多了一步查找字符的二进制值的过程。比如:9用二进制写出就是0b1001,utf-8的'9‘写出就是要先在utf-8码表中找'9'对应的二进制0b111001,然后再写出。  写ifnotos.path.exists("NewFolder"):os.mkdir("NewFolder")......
  • python jsonpickle模块不序列化私有变量
    jsonpickle模块可以把对象序列化为JSON文件,还是比较方便的.但是并不是所有变量都需要序列化的,比如有些私有变量就不需要序列化,下面是实现方法:importjsonpickleclassNoSerailPrivates:'''表示不序列化私有变量,以_开头都变量'''def__getstate__(self):......
  • 饮冰三年-人工智能-Django淘宝拾遗-85-常用的Python格式化工具
       Python代码格式化对于团队协作、代码质量、错误预防以及与Python社区的契合都具有重要意义。好的代码格式化不仅是一种编码规范,更是一种良好的编码习惯,有助于提高整个项目的质量和可维护性。   在团队中,可能有不同的编码规范和自定义的格式化规则。尽管有一些格式......
  • CentOS升级Python到2.7版本
    查看python的版本viewsource1 python-VPython2.4.31.先安装GCCviewsource1 yum-yinstallgcc2.下载Python-2.7.2viewsource1 wgethttp://python.org/ftp/python/2.7.2/Python-2.7.2.tar.bz23.解压Python-2.7.2viewsource1 tar-jxvfPython-2.7.2.tar.bz24.进......
  • 基于Python实现种差值方法
    完整资料进入【数字空间】查看——baidu搜索"writebug"一、种差值方法的实现与问题三种插值方法都是使用Python自己实现的。1.1最近邻插值寻找每个中心点周围的八个点中有无未丢失的点,如果有的话就赋值为第一个找到的点,如果没有就扩大范围再次寻找,在最大范围内都找不到的话就跳过......
  • python虚拟环境的安装
    ​1.虚拟环境有多种-Virtualenv第三方,使用比较多-pipenv官方的2.需要安装的两个模块pip3installvirtualenv第三方虚拟环境pip3installvirtualenvwrapper-win 增加模块,在win上让虚拟环境更好用3.配置虚拟环境控制面板=>系统和安全=>系统=>高级系统设......
  • Python学习笔记:递归、闭包以及装饰器
    一、首先,什么是递归?首先,简单来说递归就是在运行的过程中不断调用自身,从而完成“递”和“归”两个过程。在Python当中递归函数也是这个道理,通过直接或者间接调用函数本身就叫递归函数。注:在Python中编写递归函数一定要有结束条件否则会导致内存溢出。1、Python案例:​ 首先......
  • 快速检测HTTP代理IP是否有效的方法及python代码示例
     1.使用在线代理检测工具:有许多免费的在线代理检测工具可用,如ProxyChecker、ProxyScrape等。只需将待检测的代理IP和端口输入工具中,点击开始检测,即可迅速获得代理的可用性和匿名性等信息。 2.使用命令行工具进行检测:在命令行中使用curl命令来测试代理的可用性。例如,输入命令"......
  • python爬虫实战——小说爬取
    python爬虫实战——小说爬取基于requests库和lxml库编写的爬虫,目标小说网站域名http://www.365kk.cc/,类似的小说网站殊途同归,均可采用本文方法爬取。目标网站:传送门本文的目标书籍:《我的师兄实在太稳健了》“渡劫只有九成八的把握,和送死有什么区别?”基本思路网络爬虫的工作实际上主......