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

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

[[431960]]

本文转载自微信公众号「Python技术」,作者派森酱 。转载本文请联系Python技术公众号。

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

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

安装

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

pip install Pillow 
  • 1.

基本操作

打开图像

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

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

转换格式

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

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

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

[[431961]]

展示图片

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

img.show() 
  • 1.

剪裁

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

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

合并

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

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

缩略图

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

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

旋转

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

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

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

滤镜

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

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

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

  • 亮度增强

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

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

二次创作

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

画线

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

文字

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

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

总结

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

 

责任编辑:武晓燕 来源: Python技术
相关推荐

2025-02-12 09:55:01

Java代码性能

2024-05-31 14:04:18

2021-02-24 14:30:59

JavaScript语言开发

2017-04-05 11:10:23

Javascript代码前端

2023-11-10 09:41:44

Python代码

2024-09-18 06:10:00

条件表达式判断代码Python

2022-02-24 10:40:14

Python代码

2016-12-02 08:53:18

Python一行代码

2021-11-02 16:25:41

Python代码技巧

2024-09-26 15:46:54

Python编程

2024-12-03 09:23:20

2017-10-26 13:40:11

Python一行代码

2020-04-22 13:56:26

python函数编程

2020-08-12 14:54:00

Python代码开发

2024-05-31 13:14:05

2021-11-05 06:57:50

架构工具代码

2024-12-30 08:10:00

C++17代码文件

2022-04-09 09:11:33

Python

2014-02-12 13:43:50

代码并行任务

2025-03-25 08:15:00

JavaScript开发代码
点赞
收藏

51CTO技术栈公众号