0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296  利用Python库,把Python当PS用!
英语文化交流 > 技术博客 > 利用Python库,把Python当PS用!
利用Python库,把Python当PS用!
时间: 分类:技术博客

给大家带来一篇关于PIL的文章,PIL全称是Python Image Library,顾名思义,是用来做图像处理的。用这个库,可以实现很多PS里的效果,比如像图片模糊、寻找轮廓、边缘检测等等。我们来看看具体怎么做到的呢?​

PS作为世界四大发明之一可以说被广大网友用到了极致,只有你想不到的没有我P不了的,任何正经的图片在都可以变成搞笑图片(比如下图)当然也可以用ps做一点正经的事情。

利用Python库,把Python当PS用!

作为一个爱折腾的程序猿能用代码的解决的事情绝对不会用其他的方式,Python可以打飞机,人工降雪,那么p个图对于Python来说是小儿科了,今天就教给大家Python之p图大法。

具体介绍

今天P图主要用到的就是PIL库。

PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了,今天只是简单的学习了几个方法就已经感受到PIL的强大。

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

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

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

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

今天先给大家介绍今天学到的三个比较好玩的操作,并没有详细的介绍PIL那些最常用的特性与用法,感兴趣的小伙伴文末留言如果人数较多会考虑分享常用的特性。学习过程中有不懂的可以加入我们的学习交流秋秋圈784中间758后面214,与你分享Python企业当下人才需求及怎么从零基础学习Python,和学习什么内容。相关学习视频资料、开发工具都有分享

代码实现

先上一个效果图。

利用Python库,把Python当PS用!

实现这个效果使用的是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')</pre>

当然除了上面的方法还可以使用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')</pre>

自己只是做了一个简单的测试大家可以通过这种方法做出更好看的图片,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")

利用Python库,把Python当PS用!

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

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')
Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎

看一下效果第一张是原图,剩下的是根据我们设置的呈现的效果图。

利用Python库,把Python当PS用!

利用Python库,把Python当PS用!

利用Python库,把Python当PS用!

利用Python库,把Python当PS用!

随机阅读

Copyright © 2017 英语文化交流 All Rights Reserved.