0x00前言
由于CTF的misc经常需要用脚本处理图像,处理图像的库比较出名的就是PIL库。
首先介绍PIL这个库,PIL:Python Imaging Library,该库虽然是第三方库,但是俨然已经成为了图像处理的官方库。官方手册:https://pillow.readthedocs.io/en/latest/handbook/tutorial.html
由于PIL仅支持到Python 2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python 3.x,又加入了许多新特性,因此,我们可以直接安装使用Pillow。
github:https://github.com/python-pillow/Pillow
安装:win/lin/mac
1 | pip install Pillow |
0x01 Image类的常见用法
0x001 加载图片
1 | from PIL import Image |
0x002 查看图片常见属性
1 | from PIL import Image |
format是图片的格式,size是图片的宽、高,以元祖形式返回,mode是图片的模式
0x003 显示图片
1 | from PIL import Image |
0x004 图片读写
1 | infile = 'Mycat.jpg' |
os.path.splitext用于将文件的路径+名字和拓展名用元祖形式返回
0x005 图片序列
当处理GIF这种包含多个帧的图片,称之为序列文件,PIL会自动打开序列文件的第一帧。而使用seek和tell方法可以在不同帧移动。tell是帧数,而seek是取当前帧数的图片。
1 | from PIL import Image |
也可以用ImageSequence的Iterator方法遍历
1 | from PIL import Image |
0x006 读取像素和修改像素
1 | from PIL import Image |
getpixel((x,y))获取当前位置的像素值
putpixel((x,y),value)修改给定位置的像素值
0x007 创建当前目录的图像的缩略图
1 | from PIL import Image |
glob匹配==>https://pymotw.com/2/glob/
0x008 创建新图像
1 | from PIL import Image |
Image.new(mode,(width,height),color)
mode==>https://pillow.readthedocs.io/en/stable/handbook/concepts.html#concept-modes
color==>https://blog.csdn.net/fjseryi/article/details/48999661
0x009 将图像转换为数组&数组转换为图像
1 | from PIL import Image |
实战:hgame2021-week3-misc-ARK
参考链接
https://www.freebuf.com/sectool/206732.html 含ctf实战和更多常见用法
https://pypi.org/project/Pillow/ pillow库