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() 读取像素的rgb im.getpixel((x, y)) #图片左上角是坐标原点,横轴为x,纵轴为y 修改像素的rgb 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()
标签:python,Image,gif,图像处理,im,open,tell,图片 From: https://www.cnblogs.com/jimmy-hwang/p/17368236.html