Python技术迷

如何用Python处理图像?

昨天晚上,我在客厅刷手机,想着改天得把老婆手机里的照片给清一下,她那相册都一千多张了,你们懂吧,平时一拍就忘。正好她问我:“你不是说Python能批量搞图片么?怎么用的?”我就顺手给她演示了一下。

说实话,Python这东西处理图片还真挺方便,尤其你不用搞啥C++编译环境那一堆破事。最常用的就是Pillow,原来叫PIL,反正你用pip装就完了。代码写起来也不难,贴一段你感受下:

from PIL import Image

img = Image.open("cat.jpg")
img = img.rotate(90)
img.save("cat_rotated.jpg")

就这几行,图片打开,旋转九十度,存个新文件。老婆直接说:“啊?这么快就好了?”我说这才哪到哪。你要批量加水印、缩放啥的,Python一样搞得定。

然后我再补一嘴,Pillow其实用着和你在微信里贴图差不多直观,比如你想把一堆照片全部缩成200x200那种小方块,代码随便糊两行:

import os
from PIL import Image

folder = "photos"
for name in os.listdir(folder):
if name.endswith(".jpg"):
        img = Image.open(os.path.join(folder, name))
        img = img.resize((200, 200))
        img.save(os.path.join("thumbs", name))

只要你不怕电脑卡死,五百张图片一会就弄完。我们组小李,前两天还跟我抱怨手动搞头像,结果被我这几行代码救了,直接升职加鸡腿那种(当然是吹的)。

对了,生活里经常碰到啥图片加滤镜,变灰度什么的,Pillow那玩意也自带:

from PIL import Image, ImageFilter

img = Image.open("cat.jpg")
gray = img.convert("L")  # 灰度图
blur = img.filter(ImageFilter.BLUR)  # 模糊滤镜
gray.save("cat_gray.jpg")
blur.save("cat_blur.jpg")

你说这是不是有点像抖音滤镜?不过肯定没人家AI牛,但自己用已经很爽了。

不过吧,有时候图片太大,内存吃不消,得注意下,不然笔记本直接风扇起飞那种。我印象最深是有回项目要做批量压缩,客户给了一堆4K大图,Pillow一边压一边卡,后来只能改成分批处理,或者用opencv那种更底层的库。

说到opencv,那个稍微有点重了,搞AI识别、人脸检测啥的才用。你要真感兴趣,像这样读一下图片,然后来个Canny边缘检测:

import cv2

img = cv2.imread("cat.jpg")
edges = cv2.Canny(img, 100, 200)
cv2.imwrite("cat_edge.jpg", edges)

不过opencv用法和Pillow不太一样,反正自己瞎试试,不会把电脑玩坏的。

还有,有人老喜欢搞个批量改名啥的,用Python顺手就来了,os.rename配合os.listdir就搞定,这儿就不多说了。

总的来说吧,Python处理图片特别适合日常批量活,别老想着高并发啥的场景,那不是它的主战场。你们日常手机照片多了,或者公司搞活动要统一尺寸、加logo啥的,直接用这点代码,别手工苦逼地P图了。

-END-

我为大家打造了一份RPA教程,完全免费:https://www.songshuhezi.com/rpa.html

🔥虎哥私藏精品🔥

虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB,点击下方公众号回复关键字 python 全部免费领