python能出图吗_你知道吗?Python也能P图!

PIL可以做很多和图像处理相关的事情:

图像归档(Image Archives)。PIL非常适合于图像归档以及图像的批处理任务。你可以使用PIL创建缩略图,转换图像格式,打印图像等等。

图像展示(Image Display)。PIL较新的版本支持包括TkPhotoImage,BitmapImage还有Windows DIB等接口。PIL支持众多的GUI框架接口,可以用于图像展示。

图像处理(Image Processing)。PIL包括了基础的图像处理函数,包括对点的处理,使用众多的卷积核(convolution kernels)做过滤(filter),还有颜色空间的转换。PIL库同样支持图像的大小转换,图像旋转,以及任意的仿射变换。PIL还有一些直方图的方法,允许你展示图像的一些统计特性。这个可以用来实现图像的自动对比度增强,还有全局的统计分析等。

今天先给大家介绍今天学到的三个比较好玩的操作,并没有详细的介绍PIL那些最常用的特性与用法,感兴趣的小伙伴文末留言如果人数较多会考虑分享常用的特性。

代码实现

先上一个效果图。

9c05d0af01f34ec757b02ba2dfdffddc.png

实现这个效果使用的是PIL中的Blend类

Image.blend(image1,image2,alpha) ⇒image

使用给定的两张图像及透明度变量alpha,插值出一张新的图像。这两张图像必须 有一样的尺寸和模式 。

合成公式为:out=image1(1.0- alpha)+image2alpha

若变量alpha为0.0,返回第一张图像的拷贝。若变量alpha为1.0,将返回第二张图像的拷贝。对变量alpha的值无限制。

from PIL import Image im1 = Image.open("124.jpg") im2 = Image.open("123.jpg") print(im1.mode,im1.size) print(im2.mode,im2.size) im = Image.blend(im1, im2, 0.3) im.save('k3.jpg')

当然除了上面的方法还可以使用Composite类

Image.composite(image1,image2, mask) ⇒ image

复合类使用给定的两张图像及mask图像作为透明度,插值出一张新的图像。变量mask图像的模式可以为“1”,“L”或者“RGBA”。所有图像必须有 相同的尺寸 。

from PIL import Image im1 = Image.open("124.jpg") im2 = Image.open("123.jpg") r,g,b = im1.split() print(b.mode) print(im1.mode,im1.size) print(im2.mode,im2.size) im = Image.composite(im1,im2,b) im.save('k1.jpg')

自己只是做了一个简单的测试大家可以通过这种方法做出更好看的图片,PIL不仅可以使两张图片进行重合,还可以给图片添加水印。

from PIL import Image, ImageDraw,ImageFont

将原来的图片转换为RGBA模式 im = Image.open(r"timg2.png").convert('RGBA')

新建一个图片,尺寸与上面的尺寸一样,透明度为0即完全透明 txt=Image.new('RGBA', im.size, (0,0,0,0))

设置要写文字的字体fnt=ImageFont.truetype("D:\PycharmProjects\music\SIMYOU.TTF", 30)

打汉字 d=ImageDraw.Draw(txt)

写要打的位置,内容,用的字体,文字透明度d.text((txt.size[0]-205,txt.size[1]-50),"@Ahab杂货铺",font=fnt, fill=(255,0,0,300))

两个图片复合 out=Image.alpha_composite(im, txt)

保存加水印后的图片 out.save(r"KB.png")

e5290c4f9067426e8dbdd804aa8dc6c5.png

下面带来最后一组有趣的操作:

Filter类

im.filter(filter) ⇒ image

返回一个使用给定滤波器处理过的图像的拷贝。在该模块中,预先定义了很多增强滤波器,可以通过filter()函数使用,预定义滤波器包括:

BLUR

CONTOUR

DETAIL

EDGE_ENHANCE

EDGE_ENHANCE_MORE

EMBOSS

FIND_EDGES

SMOOTH

其中BLUR就是均值滤波,CONTOUR找轮廓,FIND_EDGES边缘检测,使用该模块时,需先导入。

from PIL import Image from PIL import ImageFilter ## 调取ImageFilter img = Image.open("123.jpg") blu = imgF.filter(ImageFilter.BLUR) ##均值滤波 con = imgF.filter(ImageFilter.CONTOUR) ##找轮廓 edge = imgF.filter(ImageFilter.FIND_EDGES) ##边缘检测 blu.save('k.jpg') con.save('k2.jpg') edge.save('k3.jpg') 看一下效果第一张是原图,剩下的是根据我们设置的呈现的效果图。

bbb493485e3156cddb0ff8466990dddb.png

9b692b69fc6586d57dc88175fcf6210e.png

3131e24795474d34c4c68be3edc1be76.png

325b222e82c48f49fc3ca822740475f0.png

关于

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值