打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
一行代码搞定的事还用个锤子的 PS 啊

文 | 豆豆

来源:Python 技术「ID: pythonall」

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

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

安装

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

pip install Pillow

基本操作

打开图像

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

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

转换格式

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

img.save('cat.jpg ')

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

展示图片

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

img.show()

剪裁

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

  1. point = (150080030002300)
  2. img_crop = img.crop(point)
  3. img_crop.show()

合并

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

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

缩略图

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

  1. thumb_size = (345345)
  2. img.thumbnail(thumb_size)
  3. img.show()

旋转

使用 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()

滤镜

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

  • 高斯模糊处理

  1. img_gaussianblur = img.filter(ImageFilter.GaussianBlur(30))
  2. img_gaussianblur.show()

  • 获取照片轮廓

  1. img_contour = img.filter(ImageFilter.CONTOUR)
  2. img_contour.show()

  • 亮度增强

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

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

二次创作

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

画线

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

文字

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

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

总结

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

PS:公号内回复「Python」即可进入Python 新手学习交流群,一起 100 天计划!

老规矩,兄弟们还记得么,右下角的 “在看” 点一下,如果感觉文章内容不错的话,记得分享朋友圈让更多的人知道!

代码获取方式

识别文末二维码,回复:豆豆

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
用python编写验证码
深入剖析Python最强大图片处理模块——Pillow
使用Python批量给图片添加文字
Image.new,ImageDraw, draw.text等函数的用法
【python】程序员最浪漫的表白方式,将情书写在她的照片里
10 分钟学会 pillow 图像处理 16 式
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服