900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > nodejs 图片处理模块 rotate_会照片处理的不只是ps 还有python!

nodejs 图片处理模块 rotate_会照片处理的不只是ps 还有python!

时间:2018-08-05 21:29:31

相关推荐

nodejs 图片处理模块 rotate_会照片处理的不只是ps 还有python!

女朋友老是吵着要修图,作为程序员,只会敲代码,不会ps啊,真是令人头大。程序员是这么容易被难到的吗?肯定不会!最近发现了程序员的p图神器——python。python也可以修图吗?是滴!下面就带你进入python的修图世界。(以下面这张照片为例。)图片来源于pixabay库名称:PillowPillow是Python中最流行的图像预处理函数库,支持一系列简单或复杂的图像处理功能,也是其他Python库(如SciPy和Matplotlib)能够处理图像的基础。01安装与导入直接在cmd中使用pip方法安装pillow库:

pip install Pillow

需要注意的是,其在Python2中的库名为PIL,而非Pillow。导入:

from PIL import Image

02基本操作

01 打开图片
使用Image模块中的open函数打开一张图片:

im = Image.open('1.jpg')

02 查看格式
format属性定义了图像的格式,如果图像不是从文件打开的,那么该属性值为None:

im.format

输出:'JPEG'

03 查看大小
size属性是一个tuple,表示图像的宽和高(单位为像素):

im.size

输出:(960, 640)

04 查看模式
mode属性为表示图像的模式,模式属性如下:

im.mode

输出:'RGB'

05 查看文件名

im.filename

输出:'1.jpg'

06 查看位数

im.bits

输出:8

07 显示图片
标准版本的show()方法不是很有效率,因为它先将图像保存为一个临时文件,然后使用查看器进行显示。

im.show()

08 保存图片

im.save('2.jpg')

03图片处理01 图片裁剪使用open方法读取图片,然后查看它的size,size的输出是(960, 640),也就是图片的宽度和高度。之后我们调用crop方法来对图片进行裁剪,crop需要给定一个box参数,box是一个四元组,元组中元素的顺序是需要裁剪得到的图片在原图中的左、上、右、下坐标,即(left, upper, right, lower)。然后,我们使用save方法保存裁剪得到的图片。

from PIL import Image

img = Image.open("1.jpg")print(img.size)

cropped = img.crop((200, 0,600, 400)) # (left, upper, right, lower)

cropped.save("A.jpg")

裁剪后的图片:

02 复制粘贴

Image的copy函数如其名会产生一个原图像的副本,在这个副本上的任何操作不会影响到原图像。paste()方法用于将一个图像粘贴(覆盖)在另一个图像上面。谁调用它,他就在该Image对象上直接作修改。

cropedIm = im.crop((400, 0, 800, 800))im.paste(cropedIm, (0, 0))im.show()im.save("B.jpg")

以裁剪后的图像宽度和高度为间隔,在循环内不断粘贴在副本中,会发生什么呢?

cropedIm = im.crop((300, 50, 500, 350))

crop_width, crop_height = cropedIm.size

width, height = im.size

copyIm = im.copy()for left in range(0, width, crop_width):for top in range(0, height, crop_height):

copyIm.paste(cropedIm, (left, top))

copyIm.save("C.jpg")

有一点像证件照的效果:03 图片缩放resize方法返回指定宽高度的新Image对象,接受一个含有宽高的元组作为参数。宽高的值得是整数。

width, height = im.size

resizedIm = im.resize((width, height+(960-640)))resizedIm.save("D.jpg")

人也变瘦了,可以看到resize不是等比例缩放的,不过女生应该蛮喜欢变瘦的吧。04 图片旋转图像可以用rotate()方法旋转,该方法返回旋转后的新Image对象,并保持原始Image对象不变。rotate()的参数是一个整数或浮点数。

im = Image.open("1.jpg")im.rotate(90).save("E.jpg")im.rotate(270).save("F.jpg")im.rotate(180).save("G.jpg")im.rotate(20).save("H.jpg")

由上到下,分别是旋转了90°,180°, 270°、普通的20°。当图像旋转90或270度时,宽度和高度会变化。在windows上, 会使用黑色的背景来填补旋转造成的缝隙。05 画面增强PIL模块中有一个叫做ImageEnhance的类,该类专门用于图像的增强处理,不仅可以增强(或减弱)图像的亮度、对比度、色度,还可以用于增强图像的锐度。5.1 亮度增强Brightness:

enh_bri = ImageEnhance.Brightness(im)

brightness = 1.5

image_brightened = enh_bri.enhance(brightness)

image_brightened.show()

5.2 对比度增强Contrast:

enh_con = ImageEnhance.Contrast(im)

contrast = 1.5

image_contrasted = enh_con.enhance(contrast)

image_contrasted.show()

5.3 色度增强Color:

enh_col = ImageEnhance.Color(im)

color = 1.5

image_colored = enh_col.enhance(color)

image_colored.show()

5.4 锐度增强Sharpness:

enh_sha = ImageEnhance.Sharpness(im)

sharpness = 6.0

image_sharped = enh_sha.enhance(sharpness)

image_sharped.show()

调节亮度、对比度、色彩、锐度等,不就等于给照片加了滤镜吗?而且效果还不错!06 图像过滤在图像处理中,经常需要对图像进行平滑、锐化、边界增强等滤波处理。在使用PIL图像处理库时,我们通过Image类中的成员函数filter()来调用滤波函数对图像进行滤波,而滤波函数则通过ImageFilter类来定义的。6.1 高斯模糊

im.filter(ImageFilter.GaussianBlur).save("J.jpg")

6.2 浮雕

im.filter(ImageFilter.EMBOSS).save("L.jpg")

6.3 轮廓

im.filter(ImageFilter.CONTOUR).save("M.jpg")

除此之外,pillow中还提供以下滤波可供使用:

# 锐化im.filter(ImageFilter.SHARPEN).save('.jpg')

# 平滑im.filter(ImageFilter.SMOOTH).save('.jpg')

# 细节im.filter(ImageFilter.DETAIL).save('.jpg')

# 普通模糊im.filter(ImageFilter.BLUR).save('.jpg')

# 边缘增强im.filter(ImageFilter.EDGE_ENHANCE).save('.jpg')

# 找到边缘im.filter(ImageFilter.FIND_EDGES).save('.jpg')

关于python中pillow库的照片处理到这儿就差不多了,虽然使用python进行照片处理跟ps还是有一定的差别,但基本操作没有问题,四舍五入我们还是会修图的!往 期 推 荐

99%的人都不知道的Python整理文件方法,效率提升100倍

有哪些你不知道的python小工具

利用python制作词云,wordcloud神器你值得拥有

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。