利用Python库,把Python当PS用!

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

PS作为世界四大发明之一可以说被广大网友用到了极致,只有你想不到的没有我P不了的,任何正经的图片在都可以变成搞笑图片(比如下图)当然也可以用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,和学习什么内容。相关学习视频资料、开发工具都有分享

代码实现

先上一个效果图。

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

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

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学习者的聚集地,零基础,进阶,都欢迎

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

原文地址:https://blog.51cto.com/14445003/2421461

时间: 2024-10-10 05:59:34

利用Python库,把Python当PS用!的相关文章

Appium+python移动端自动化测试-python库及pycharm安装(二)

一.安装python库 安装python库有很多种方法,如pip安装.源文件安装.运行包安装,但我们最常用的就是使用pip进行安装 Appium+python做移动端的自动化测试,所需要安装以下python库,打开cmd命令: 安装Appium-Python-Client pip install Appium-Python-Client 安装schematics pip install schematics 安装requests pip install requests 安装pymysql pi

Python库的优雅安装及PyCharm虚拟环境配置

一.安装python库 安装python库有几种方式: 1. 使用pip命令行,如:pip install Pillow 2. 在pycharm中安装 3. 使用Anaconda批量安装常用模块 在使用Python时,我们经常需要用到很多第三方库,例如,上面提到的Pillow,以及MySQL驱动程序,Web框架Flask,科学计算Numpy等.用pip一个一个安装费时费力,还需要考虑兼容性.我们推荐直接使用,这是一个基于Python的数据处理和科学计算平台,它已经内置了许多非常有用的第三方库,我

python 利用PIL库进行更改图片大小的操作

python 是可以利用PIL库进行更改图片大小的操作的,当然一般情况下是不需要的,但是在一些特殊的利用场合,是需要改变图片的灰度或是大小等的操作的,其实用python更改图片的大小还是蛮简单的,只需要几行代码,有一点可能刚入门的小伙伴们可能不知道PIL库,PIL是一个库的简写,他的真名叫做pillow,因此,需要pip install pillow 用anaconda的话是conda install pillow千万不要pip/conda install PIL咯,下面贴出代码,希望对一些小伙

python利用selenium库识别点触验证码

利用selenium库和超级鹰识别点触验证码(学习于静谧大大的书,想自己整理一下思路) 一.超级鹰注册:超级鹰入口 1.首先注册一个超级鹰账号,然后在超级鹰免费测试地方可以关注公众号,领取1000积分,基本上就够学习使用了.如果想一直用可以用,可以充值,不是很贵. 2.下载超级鹰的python库代码.代码 3.然后有测试案例,自己可以试着跑一跑代码. 二.使用selenium库来识别点触式验证码: 1.首先是找一个使用点触式二维码的网站:(这个真的是比较难找了,由于静谧大大书上的网站被封了,我找

Python爬虫入门——利用bs4库对HTML页面信息进行遍历读取

内容整理自中国大学MOOC——北京理工大学-蒿天-基于bs4库的HTML页面遍历方法 我们使用如下链接作为实验对象 https://python123.io/ws/demo.html 页面信息如下 利用requests库爬取出网页的HTML完整代码 1 import requests 2 r = requests.get("http://python123.io/ws/demo.html") 3 demo = r.text 4 print(demo) 网页内容如下 熟悉HTML页面架构

跨平台的系统信息获取python库 - psutil

想写一个REST API来获取OS的CPU,内存等系统信息,正准备苦哈哈的轮一个 /proc/stat 的parser,发现了psutil ~ 一个跨平台的获取系统信息的python库,支持linux,windows,osx,sunos, 可以说很好,很全面,很pythonic https://github.com/giampaolo/psutil 简介: psutil (python system and process utilities) is a cross-platform libra

各种 Python 库/模块/工具

1 算法 1.1 字符串处理 re 正则表达式的标准库. StringIO / cStringIO 以读写文件的方式来操作字符串(有点类似于内存文件). cStringIO 是 C 语言实现的,提供高性能:而 StringIO 是 Python 实现的,提供 Unicode 兼容性. chardet chardet 可以猜测任意一段文本的字符集编码.对于编码类型未知的文本,它会很有用. chardet 既可以作为模块来使用,也可以作为命令行工具来使用. 代码示例 import chardet p

利用Fabric+Capistrano实现Python自动化部署

Fabric是一个用于应用(批量)部署和系统(批量)管理的Python库和命令行工具,关于Fabric的介绍请参考:http://www.fabfile.org/. Capistrano是一个用Ruby语言编写的远程服务器自动化和部署工具,关于Capistrano的介绍请参考:http://capistranorb.com/. 本文仅使用Python语言和部分Linux或Windows系统命令,借助Fabric模块和Capistrano的部署思路,实现在Linux平台和Windows平台的自动化

Robot Framework: 自定义自己的python库

利用Robot Framework编写测试用例,往往需要开发自己的关键字,有的关键字需要通过自己编写python代码来实现.这在rf中,就需要自己定义python库.这个过程其实不复杂,本文来介绍下. 1.在python安装目录下的 Lib\site-packages 目录下 新建一个目录,目录名就是库名,如 NewLibrary 2.在新建的NewLibrary目录下创建一个python文件,任何合法的文件名即可,扩展名为py.如:myclass.py 其内容如下 class MyClass(

(转载)常用的Python库

http://forum.ubuntu.com.cn/viewtopic.php?f=63&t=249573&p=2640959 Tkinter ---- Python默认的图形界面接口. Tkinter是一个和Tk接口的Python模块,Tkinter库提供了对Tk API的接口,它属于Tcl/Tk的GUI工具组.Tcl/Tk是由John Ousterhout发展的书写和图形设备.Tcl(工具命令语言)是个宏语言,用于简化shell下复杂程序的开发,Tk工具包是和Tcl一起开发的,目的是