脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - 一行Python代码搞定的事还用个锤子的 PS 啊

一行Python代码搞定的事还用个锤子的 PS 啊

2021-10-29 22:44Python技术派森酱 Python

Python 届处理图片最强的库是 PIL(Python Image Library),但由于该库只支持 2.x 版本,于是有一批乐于助人的程序员在此基础上做了扩展,出了一个兼容 3.x 的版本也就是 Pillow,因此,我们今天要用的库就是 Pillow。

一行Python代码搞定的事还用个锤子的 PS 啊

在我们的日常生活和工作中有不少场景需要简单处下理图片,很多人都是依赖 PS、美图秀秀等各种图像处理工具,殊不知在你打开软件的一瞬间 Python 就已经将图片处理完了。听起来是不是很神奇,正所谓是 Python 在手,啥也不愁。

Python 届处理图片最强的库是 PIL(Python Image Library),但由于该库只支持 2.x 版本,于是有一批乐于助人的程序员在此基础上做了扩展,出了一个兼容 3.x 的版本也就是 Pillow,因此,我们今天要用的库就是 Pillow。

安装

老规矩,先通过 pip 安装到本地机器。

  1. pipinstallPillow

基本操作

打开图像

可以通过 Image 类来操控图片,比如打开一张图片并获取其基本信息。

  1. fromPILimportImage,ImageFilter,ImageEnhance,ImageDraw,ImageFont
  2.  
  3. img=Image.open('cat.jpg')
  4. print(F'图片大小为{img.format},格式为{img.size},模式为{img.mode}')
  5.  
  6. #图片大小为JPEG,格式为(3458,3456),模式为RGB

转换格式

如果给目标图片转换格式,可以通过 save 函数来实现。

  1. img.save("cat.jpg")

之后你就会在同目录下得到一张扩展名为 png 的图片了。

一行Python代码搞定的事还用个锤子的 PS 啊

展示图片

直接通过 show 函数来显示图片。

  1. img.show()

剪裁

使用 crop 函数传入一个四元祖坐标来剪裁图片。

  1. point=(1500,800,3000,2300)
  2. img_crop=img.crop(point)
  3. img_crop.show()

一行Python代码搞定的事还用个锤子的 PS 啊

合并

通过 paste 函数传入合并的图像和坐标来实现两张图片的合并,那如果要合并多张图片呢,当然是直接调用多次就好了呀。

  1. img.paste(img_crop,(0,0),None)
  2. img.show(

一行Python代码搞定的事还用个锤子的 PS 啊

缩略图

有时候图像过大,这时候就显示出缩略图的必要了,可以通过 thumbnail 函数传入 size 来实现图片的缩小。

  1. thumb_size=(345,345)
  2. img.thumbnail(thumb_size)
  3. img.show()

一行Python代码搞定的事还用个锤子的 PS 啊

旋转

使用 transpose 函数传入旋转角度来实现图片的翻转。

可以传入的参数有以下几种:

  • Image.ROTATE_90:逆时针旋转 90°
  • Image.ROTATE_180:逆时针旋转 180°
  • Image.ROTATE_270:逆时针旋转 270°
  • Image.FLIP_LEFT_RIGHT:左右翻转
  • Image.FLIP_TOP_BOTTOM:上下翻转
  1. img_rotate=img.transpose(Image.ROTATE_90)
  2. img_rotate.show()

一行Python代码搞定的事还用个锤子的 PS 啊

滤镜

当然,我们还可以对图片做一些滤镜处理。

  • 高斯模糊处理
  1. img_gaussianblur=img.filter(ImageFilter.GaussianBlur(30))
  2. img_gaussianblur.show()

一行Python代码搞定的事还用个锤子的 PS 啊

  • 获取照片轮廓
  1. img_contour=img.filter(ImageFilter.CONTOUR)
  2. img_contour.show()

一行Python代码搞定的事还用个锤子的 PS 啊

  • 亮度增强

如果照片亮度不够,还可以对照片进行亮度增强。

  1. color=ImageEnhance.Color(img)
  2. img_color=color.enhance(1.5)
  3. img_color.show()

一行Python代码搞定的事还用个锤子的 PS 啊

二次创作

当然,如果想对图片进行二次创作,比如添加一些辅助线,文字之类的可以用 ImageDraw 类来完成。

画线

  1. draw=ImageDraw.Draw(img)
  2. draw.line((0,0)+img.size,fill=20,width=3)
  3. draw.line((0,img.size[1],img.size[0],0),fill=200,width=3)
  4. img.show()

一行Python代码搞定的事还用个锤子的 PS 啊

文字

  1. draw=ImageDraw.Draw(img)
  2. font=ImageFont.truetype('AliPuHui-Bold.ttf',200)
  3. text='Thisisacat!'
  4. draw.text((450,450),text,font=font,fill='pink')
  5. img.show()

一行Python代码搞定的事还用个锤子的 PS 啊

当然,如果有多行文字的话,直接加入换行符 \n 即可。

一行Python代码搞定的事还用个锤子的 PS 啊

总结

今天派森酱带大家一起通过使用 Pillow 库对图片进行一些简单的操作,事实上 Pillow 库远不止此,将这些简单的操作进行组合甚至可以自创表情包,期待小伙伴们自行发掘更多更好玩的用法呀~

原文链接:https://mp.weixin.qq.com/s/iwwds4amlBBFkq3BkwEfSg

延伸 · 阅读

精彩推荐