python图像处理库

发布时间 2023-05-02 21:35:57作者: summer14
pillow是图像处理的python第三方库,可以对图片进行加载、显示、保存、剪切、黏贴、分离、合并等操作。

一种题目是在图片中逆序或隐藏其他格式的文件,需要用到pillow库的Image类的open、save、getpixel、putpixel等方法-。
另一种题目是在GIF图片中分离或合并多个帧,需要用到pillow库的Image类的seek、tell、show等方法,或者ImageSequence模块的Iterator方法。
还有一种题目是在图片中隐藏信息,需要用到pillow库的Image类的crop、paste、transpose等方法

 Pillow基本使用

新建一张图片
im = Image.new("RGBA", (width, height))

加载图片
im = Image.open('Mycat.jpg')
显示图片
im.show()
另存为其他格式
im.save("Mycat.png")
图片剪切 box
= (x1, y1 ,x2, y2) #图片左上角是坐标原点,横轴为x,纵轴为y,x2>=x1,y2>=y1 im.crop(box)       #剪切出来的图片是各点划线所围的矩形 图片粘贴(一张图片覆盖到另一张图上面) im2 = Image.open("Mydog.jpg") im.paste(im2) #把im2贴到im上 处理gif im = Image.open("Mypig.gif") im.tell() #显示当前帧数 im.seek(1) #移动到指定帧 im.show() 读取像素 im.getpixel((x, y))    #图片左上角是坐标原点,横轴为x,纵轴为y 修改像素 im.putpixel((x, y), (0, 0, 0))    #rgb(0, 0, 0),黑色

 

取出GIF每一帧,合成为新的图片

gif把完整的图片细分成很多小的切片。

  

先取出gif的每一帧,存放在指定目录里

#!/usr/bin/env python3

from PIL import Image

gif = Image.open("glance.gif")
gif.save(f"frame/{gif.tell()}.png")
while True:
        gif.seek(gif.tell() + 1)
        gif.save(f"frame/{gif.tell()}.png")

得到201张,每张宽高为2*600的图片。  

  

新建一张图片,把每一帧依次覆盖在新的图片上。

#!/usr/bin/env python3

from PIL import Image

im = Image.new("RGBA", (402, 600))

w = 0
for i in range(201):
    gif = Image.open(str(i) + ".png")
    box = (w, 0, w+2, 600)
    im.paste(gif, box)
    w += 2
im.show()