首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用 Pillow 实现图像处理:从基础到高级的图像编辑技巧!

【今日python】用Pillow实现图像处理:从基础到高级的图像编辑技巧!

今天咱玩玩Pillow,这玩意儿在Python里处理图片贼好用,从简单改大小到加滤镜,都能搞定。

##安装和导入Pillow

先装上,命令行里敲pipinstallPillow就行。然后在代码里导入:

fromPILimportImage

##打开和保存图像

这步简单,跟开冰箱门一样:

im=Image.open("my_cat.jpg")#替换成你的图片路径

im.save("my_cat_copy.png")#保存成png格式

##调整图像大小

图片太大?想压缩一下?小case!

size=(200,200)#新的尺寸

im.thumbnail(size)#注意是thumbnail,等比例缩放

im.save("my_cat_small.jpg")

温馨提示:thumbnail方法是等比例缩放,如果想要强制改成特定尺寸,用resize方法,不过图片可能会变形,跟照哈哈镜似的。

##旋转和翻转图像

想把猫咪倒过来?或者旋转90度?

im_rotated=im.rotate(45)#旋转45度,逆时针

im_flipped=im.transpose(Image.FLIP_LEFT_RIGHT)#水平翻转,还有其他翻转方式,自己查文档

im_rotated.save("my_cat_rotated.jpg")

im_flipped.save("my_cat_flipped.jpg")

##裁剪图像

只想留下一部分图片,就像用剪刀剪一样:

box=(100,100,400,400)#(左上角x,左上角y,右下角x,右下角y)

region=im.crop(box)

region.save("my_cat_cropped.jpg")

这box就像在图片上画个框,框里的就是你要留下的部分。

##颜色转换

把彩色照片变成复古的黑白照:

im_gray=im.convert("L")#"L"表示灰度模式

im_gray.save("my_cat_gray.jpg")

##图像增强

Pillow里有好多滤镜,可以给图片加点特效:

fromPILimportImageFilter

im_blurred=im.filter(ImageFilter.BLUR)#模糊效果

im_sharpened=im.filter(ImageFilter.SHARPEN)#锐化效果

im_blurred.save("my_cat_blurred.jpg")

im_sharpened.save("my_cat_sharpened.jpg")

还有其他滤镜,像ImageFilter.DETAIL、ImageFilter.EDGE_ENHANCE之类的,可以自己试试,看看有啥惊喜。

##绘制图形和文字

想在图片上画点东西,或者加点文字?

fromPILimportImageDraw

draw=ImageDraw.Draw(im)

draw.line((0,0)+im.size,fill=128)#画一条对角线

draw.text((10,10),"Hello,Cat!",fill="red")#加点文字

im.save("my_cat_with_text.jpg")

这fill参数可以设置颜色,可以用颜色名称,也可以用RGB值,比如(255,0,0)表示红色。

##像素操作

想玩点高级的?可以直接操作像素:

pixels=im.load()#获取像素数据

foriinrange(im.size[0]):

forjinrange(im.size[1]):

r,g,b=pixels[i,j]#获取每个像素的RGB值

#这里可以对像素进行各种操作,比如修改颜色

pixels[i,j]=(r,g,0)#把蓝色通道设为0

im.save("my_cat_modified.jpg")

温馨提示:像素操作比较耗时,图片大了可能会有点慢。

##图像通道和模式

每个图片都有颜色模式,RGB最常见,还有RGBA(带透明通道)、CMYK等等。可以用im.mode查看图片的模式。还可以分离通道,比如:

r,g,b=im.split()#分离RGB通道

这三个变量r、g、b就分别代表了红、绿、蓝三个通道的图像。

今天就先聊到这儿,Pillow还有好多功能,自己去探索吧!这玩意儿玩熟了,处理图片还不是小菜一碟?

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OdCNM8MYVHPkyOwhEjetAJEQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券