女朋友老是吵着要修图,作为程序员,只会敲代码,不会ps啊,真是令人头大。

程序员是这么容易被难到的吗?肯定不会!最近发现了程序员的p图神器——python。

python也可以修图吗?是滴!下面就带你进入python的修图世界。(以下面这张照片为例。)

图片来源于pixabay

库名称:Pillow

Pillow是Python中最流行的图像预处理函数库,支持一系列简单或复杂的图像处理功能,也是其他Python库(如SciPy和Matplotlib)能够处理图像的基础。

01

安装与导入

直接在cmd中使用pip方法安装pillow库:

pipinstallPillow

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

导入:

fromPILimportImage

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,,600,400)) # (left, upper,right, lower)

cropped.save("A.jpg")

裁剪后的图片:

02 复制粘贴

Image的copy函数如其名会产生一个原图像的副本,在这个副本上的任何操作不会影响到原图像。

paste()方法用于将一个图像粘贴(覆盖)在另一个图像上面。谁调用它,他就在该Image对象上直接作修改。

cropedIm =im.crop((400,,800,800))

im.paste(cropedIm, (,))

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()

forleftinrange(, width, crop_width):

fortop inrange(, 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还是有一定的差别,但基本操作没有问题,四舍五入我们还是会修图的!

- DataCastle -

python修图和ps_会照片处理的不只是ps,还有Python!相关推荐

  1. python可以修图吗_会照片处理的不只是ps,还有Python!

    女朋友老是吵着要修图,作为程序员,只会敲代码,不会ps啊,真是令人头大. 程序员是这么容易被难到的吗?肯定不会!最近发现了程序员的p图神器--python. python也可以修图吗?是滴!下面就带你 ...

  2. cad和python哪个好学_对纯外行人来说,学习PS和Python哪个更容易?

    果真是高手大隐隐于市,我如此隐藏都被你看出来了,谢邀回答!然后你看出了吧!答案在我这里很明显,当然是学习ps更容易一点,至于Python我的天分实在是太渣,所以,至今我敢不敢承认我学过.既然都被召唤出 ...

  3. python处理图片去白底-Python实现将蓝底照片转化为白底照片功能完整实例

    本文实例讲述了Python实现将蓝底照片转化为白底照片功能.分享给大家供大家参考,具体如下: import cv2 import numpy as np img=cv2.imread('yay.jpg ...

  4. 照片背景底色更换工具二(python+flask网页版源码及打包)

    照片背景底色更换工具二(python+flask网页版源码及打包) 所有源码 文件结构 static images huaman_src_test.jpg huaman_result_test.png ...

  5. 照片背景底色更换工具二(python+flask网页版使用演示)

    照片背景底色更换工具二(python+flask网页版) 引言 软件介绍及使用 软件包介绍 部署运行 1,双击启动 2,找到本地计算机的ip地址 3,访问链接 4,在windows server 20 ...

  6. 100天精通Python丨黑科技篇 —— 20、Python 修图(滤镜、灰度、裁剪、视觉处理、图像分割、特征提取)

    文章目录 一.PIL 常规修图操作 1. 读取图片 2. 图片缩放 3. 图片旋转 4. 图片裁剪 5. 图片滤镜 二.OpenCV 图像处理.视频处理.对象识别 三.scikit-image 视觉算 ...

  7. python编程从入门到精通 叶维忠 pdf-最好的Python入门教材是哪本?

    真的是零经验的选手来答一发: 第一个坑:因为在互联网公司,自然第一时间问公司的开发,都说学习Python很有前途,问怎么学?推荐廖雪峰老师的博客,说看看就懂了.看这个链接:Python教程 然后我是连 ...

  8. python 数组合并排重_并排深度学习:Julia vs Python

    python 数组合并排重 Julia could possibly be the biggest threat to Python. For a variety of applications, J ...

  9. Python人脸识别黑科技(二):教你使用python+Opencv完成人脸解锁

    继上一篇"Python人脸识别黑科技(一):50行代码运用Python+OpenCV实现人脸追踪+详细教程+快速入门+图像识",那么今天我们来讲关于使用python+opencv+ ...

最新文章

  1. C语言不用strcmp函数比较字符串大小
  2. 灯的开关 Bulb Switcher II
  3. 51单片机学习笔记(清翔版)(21)——ADDA数模转换
  4. Java自带的多线程监控分析工具(VisualVM)
  5. DEPHI中tform类的构造函数与FORMCREATE的关系
  6. vue获取商品数据接口_基于 request cache 请求缓存技术优化批量商品数据查询接口...
  7. 西澳大学商科专业排名_澳洲西澳大学优势专业排名多少
  8. 闪屏页面(Splash)开发
  9. 第94课 函数的参数 《小学生C++编程入门》 例94.1
  10. c++如何使用json配置文件
  11. DB2 SQL Error: SQLCODE=-668, SQLSTATE=57016,表挂起
  12. Understanding the Bias-Variance Tradeoff
  13. git push 报错提示 ! [rejected] dev -> dev (non-fast-forward)
  14. linux进程显示exit是怎么回事,linux 进程退出exit,_exit区别即atexit函数
  15. Running Hero.
  16. html网页设计作品文字,40个以大文字排版的网页设计作品
  17. 深入理解计算机系统 csapp 家庭作业(第二章完整版)
  18. 初遇项目网络平台架构设计方案
  19. openssl建立证书和私钥方法
  20. AI-大型软件研发效能倍增的银弹

热门文章

  1. Mac启动磁盘不能被分区或恢复成单个分区
  2. iCoud-MaciCoud上传文件时卡住-卡死-iCoud文件无法上传解决办法
  3. 碳纤维复合材料加工难点及铣削加工电主轴应用方案
  4. 【解决】Python程序运行时所占内存越来越大
  5. Java我的高效编程之常用函数
  6. 郝萌主的微信公众号上线了
  7. 数据科学与机器学习案例之汽车目标客户销售策略研究
  8. pin ——pin tool代码注释 各pin tool的用途
  9. Python对批量文件进行VAD检测和分段
  10. 闰年计算-第13届蓝桥杯Scratch选拔赛真题精选