python学习-图片处理小程序(PIL的安装、PIL.Image的使用、 示例程序(图片灰度值修改))

PIL的安装

首先,win + R,打开命令运行窗口,然后输入cmd命令。
在这里插入图片描述
然后在命令行中,切换到python的安装目录下:
在这里插入图片描述
然后输入pip,在python3中pip模块已内置,所以不需要安装pip。
在这里插入图片描述
接着键入pip install Pillow 提示安装成功(successful)即安装完成
在这里插入图片描述
这时候引入PIL模块,则不会报错了。

示例程序

说明:
两种方式引入image

from PIL import Image, ImageFilter, ImageOps
import PIL.Image

因为好多模块都包含Image,所以,尽量使用第二种方式,即 import PIL.Image 。
如果引入模块多了,会冲突。而且尽量不要使用这种方式引入:from PIL import *
尽量使用什么模块,则引入什么模块。不然冲突了定位问题还是挺麻烦的。

还有一点比较奇葩的地方,如果是从图片的属性中拷贝的文件路径:
在这里插入图片描述

同样是这一句代码:

img = PIL.Image.open("G:\\life\\pic\\fxq.jpg")

会报错:
在这里插入图片描述
是因为在G前面还有其他符号
在这里插入图片描述
这种情况,把G删除,然后重新输入就好了。因为路径被添加了其他符号,导致查找不到。
下面上代码:


from PIL import ImageFilter, ImageOps
import PIL.Image

img = PIL.Image.open("G:\\life\\pic\\fxq.jpg")


def dodge(a, b, alpha):
    return min(int(a * 255 / (256 - b * alpha)), 255)


def draw(img, blur=25, alpha=1.0):
    img1 = img.convert('L')
    img2 = img1.copy()
    img2 = ImageOps.invert(img2)
    for i in range(blur):
        img2 = img2.filter(ImageFilter.BLUR)
    width, height = img1.size
    for x in range(width):
        for y in range(height):
            a = img1.getpixel((x, y))
            b = img2.getpixel((x, y))
            img1.putpixel((x, y), dodge(a, b, alpha))
    img1.show()
    img1.save("G:\\life\\pic\\fxq1.jpg")


draw(img)


通过这段代码,可以把图片改成类似素描的效果。

原图和处理后图片的对比:

在这里插入图片描述

大家可以不使用风景图片,使用人像图片,可以轻松把照片转成素描图片。
当然有个问题就是putpixel函数的效率很低,不建议大家使用比较大的图片进行处理,我开始使用了一张16M的图片,等了一分钟。后面换成这个示例图片,就可以秒处理了。
附上原图:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值