Python的一个“骚操作”!

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那些最常用的特性与用法,感兴趣的小伙伴文末留言如果人数较多会考虑分享常用的特性。

主要参考自:

http://www.effbot.org/imagingbook/

代码实现

先上一个效果图。


实现这个效果使用的是PIL中的Blend类

Image.blend(image1,image2,alpha)

?image

使用给定的两张图像及透明度变量alpha,插值出一张新的图像。这两张图像必须有一样的尺寸和模式。

合成公式为:out=image1(1.0- alpha)+image2alpha

若变量alpha为0.0,返回第一张图像的拷贝。若变量alpha为1.0,将返回第二张图像的拷贝。对变量alpha的值无限制。

1from PIL import Image
2im1 = Image.open("124.jpg")
3im2 = Image.open("123.jpg")
4print(im1.mode,im1.size)
5print(im2.mode,im2.size)
6im = Image.blend(im1, im2, 0.3)
7im.save(‘k3.jpg‘)
当然除了上面的方法还可以使用Composite类

Image.composite(image1,image2, mask) ? image

复合类使用给定的两张图像及mask图像作为透明度,插值出一张新的图像。变量mask图像的模式可以为“1”,“L”或者“RGBA”。所有图像必须有相同的尺寸。

1from PIL import Image
2im1 = Image.open("124.jpg")
3im2 = Image.open("123.jpg")
4r,g,b = im1.split()
5print(b.mode)
6print(im1.mode,im1.size)
7print(im2.mode,im2.size)
8im = Image.composite(im1,im2,b)
9im.save(‘k1.jpg‘)
自己只是做了一个简单的测试大家可以通过这种方法做出更好看的图片,PIL不仅可以使两张图片进行重合,还可以给图片添加水印。

1from PIL import Image, ImageDraw,ImageFont
2#将原来的图片转换为RGBA模式
3im = Image.open(r"timg2.png").convert(‘RGBA‘)
4#新建一个图片,尺寸与上面的尺寸一样,透明度为0即完全透明
5txt=Image.new(‘RGBA‘, im.size, (0,0,0,0))
6#设置要写文字的字体
7fnt=ImageFont.truetype("D:PycharmProjectsmusicSIMYOU.TTF", 30)
8#打汉字
9d=ImageDraw.Draw(txt)
10#写要打的位置,内容,用的字体,文字透明度
11d.text((txt.size[0]-205,txt.size[1]-50),"@Ahab杂货铺",font=fnt, fill=(255,0,0,300))
12#两个图片复合
13out=Image.alpha_composite(im, txt)
14#保存加水印后的图片
15out.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边缘检测,使用该模块时,需先导入。

1from PIL import Image
2from PIL import ImageFilter ## 调取ImageFilter
3img = Image.open("123.jpg")
4blu = imgF.filter(ImageFilter.BLUR) ##均值滤波
5con = imgF.filter(ImageFilter.CONTOUR) ##找轮廓
6edge = imgF.filter(ImageFilter.FIND_EDGES) ##边缘检测
7blu.save(‘k.jpg‘)
8con.save(‘k2.jpg‘)
9edge.save(‘k3.jpg‘)
看一下效果第一张是原图,剩下的是根据我们设置的呈现的效果图。

好啦,以上就是我的分享,如果你跟我一样都喜欢python,想成为一名优秀的程序员,也在学习python的道路上奔跑,欢迎你加入python学习群:839383765 群内每天都会分享最新业内资料,分享python免费课程,共同交流学习,让学习变(编)成(程)一种习惯!

原文地址:https://blog.51cto.com/14186420/2353053

时间: 2025-02-01 14:42:04

Python的一个“骚操作”!的相关文章

Python 数据库骚操作 — MongoDB

前言 MongoDB GUI 工具 PyMongo(同步) Motor(异步) 后记 前言 最近这几天准备介绍一下 Python 与三大数据库的使用,这是第一篇,首先来介绍 MongoDB 吧,这里介绍 MongoDB 的两款操作库,走起!! MongoDB GUI 工具 首先介绍一款 MongoDB 的 GUI 工具 Robo 3T,初学 MongoDB 用这个来查看数据真的很爽.可以即时看到数据的增删改查,不用操作命令行来查看. PyMongo(同步) PyMongo 是一个同步操作的数据存

python骚操作---Print函数用法

---恢复内容开始--- python骚操作---Print函数用法 在 Python 中,print 可以打印所有变量数据,包括自定义类型. 在 3.x 中是个内置函数,并且拥有更丰富的功能. 参数选项 可以用 help(print) 来查看 print 函数的参数解释. print(...) print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) Prints the values to a stream, or

教你用Python代码实现微信遥控电脑,简单骚操作值得学习

利用python设计一个程序来实现遥控电脑.功能简单,但是能够拓展的范围极大!功能电脑开机时,手机能收到通知 由手机发个特定的邮件,控制电脑关机 步骤 申请一个邮箱,并绑定自己的手机号码(163邮箱) 在这个邮箱中设置当有新的邮件就发短信通知 电脑开机时往这个邮箱发个邮件,我手机就会收到短信通知思路第二个步骤就是通过python 脚本,定时去检查163.com邮箱中是否有指定的邮件,如果有,则执行特定功能(我的是关机).申请成功后,手机也可以通过一个号码来发送邮件,如果想关机,就会用手机发个邮件

如何在命令长度受限的情况下成功get到webshell(函数参数受限突破、mysql的骚操作)

0x01 问题提出 还记得上篇文章记一次拿webshell踩过的坑(如何用PHP编写一个不包含数字和字母的后门),我们讲到了一些PHP的一些如何巧妙地绕过数字和字母受限的技巧,今天我要给大家分享的是如何在命令长度受限的情况下成功get到webshell,以及关于函数参数受限的突破,mysql的一些骚操作技巧~~~ 0x02 问题分析 我们先看个例子: <?php $param = $_REGUEST['param']; if(strlen($param) < 17){ eval($param)

于南邮平台游荡关于宽字节注入——骚操作

脚本名:unmagicquotes.py 作用:宽字符绕过 GPC addslashes12345 Example:* Input: 1′ AND 1=1* Output: 1%bf%27 AND 1=1–%20 今天早上在南邮平台游荡的时候,做了一题关于宽字节注入的题目,虽然宽字节注入属于很常见的题目 但是,大多数人使用的都是手工注入,我作为一个小萌新(手工注入太难了QAQ) 今天get到一个新的骚操作: 题目分析: . 首先:进行简单的手工注入操作: 可以看出这个属于典型的宽字节注入:关于宽

Python中的切片操作

Python中的切片操作功能十分强大,通常我们利用切片来进行提取信息,进行相关的操作,下面就是一些切片的列子,一起来看看吧,希望对大家学习python有所帮助. 列如我们从range函数1-100中取7的倍数,函数及结果如下所示: >>> for i in range(1,100)[6::7]: print i 7 14 21 28 35 42 49 56 63 70 77 84 91 98 取一个list或tuple的部分元素是非常常见的操作.比如,一个list如下: >>

Python 3 mysql 库操作

Python 3 mysql 库操作 一.基础相关知识 MySQL数据库基本操作知识储备 数据库服务器:一台计算机(对内存要求比较高) 数据库管理系统:如mysql,是一个软件 数据库:oldboy_stu,相当于文件夹 表:student,scholl,class_list,相当于一个具体的文件 记录:1 刘海龙 324245234 22,相当于文件中的一行内容 二.SQL语言简介 SQL(Structured Query Language 即结构化查询语言) SQL语言主要用于存取数据.查询

python 的经常使用时间操作,取得当前时间等

我们先导入必须用到的一个module>>> import time设置一个时间的格式,以下会用到>>>ISOTIMEFORMAT=’%Y-%m-%d %X’看一下当前的时间,和其它非常多语言类似这是从epoch(1970 年 1 月 1 日 00:00:00)開始到当前的秒数.>>> time.time()1180759620.859上面的看不懂,换个格式来看看>>> time.localtime()(2007, 6, 2, 12,

[Python] Python 学习 - 可视化数据操作(一)

Python 学习 - 可视化数据操作(一) GitHub:https://github.com/liqingwen2015/my_data_view 目录 折线图 散点图 随机漫步 骰子点数概率 文件目录 折线图 cube_squares.py import matplotlib.pyplot as plt x_values=list(range(1, 5000)) y_values=[pow(x, 3) for x in x_values] plt.scatter(x_values, y_v