Image模块
Image模块是在Python PIL图像处理中常见的模块,对图像进行基础操作的功能基本都包含于此模块内。如open、save、conver、show…等功能。
open类
Save类
im.save(outfile,options…)
im.save(outfile, format, options…)
若要保存文件,则使用 Image 类的 save() 方法,此时保存文件的文件名就变得十分重要了,除非指定格式,否则这个库将会以文件名的扩展名作为格式保存。使用给定的文件名保存图像。如果变量format缺省,如果可能的话,则从文件名称的扩展名判断文件的格式。该方法返回为空。关键字options为文件编写器提供一些额外的指令。如果编写器不能识别某个选项,它将忽略它。用户可以使用文件对象代替文件名称。在这种情况下,用户必须指定文件格式。文件对象必须实现了seek()、tell()和write()方法,且其以二进制模式打开。如果方法save()因为某些原因失败,这个方法将产生一个异常(通常为IOError异常)。如果发生了异常,该方法也有可能已经创建了文件,并向文件写入了一些数据。如果需要的话,用户的应用程序可以删除这个不完整的文件。
from PIL import Image
im = Image.open("D:\攻防世界\\图片\\1.jpg")
print(im)
print('')
im.save("D:\攻防世界\\图片\\2.png") ## 将"E:\mywife.jpg"保存为"E:\mywife.png"
im = Image.open("D:\攻防世界\\图片\\2.png") ##打开新的png图片
print(im.format,end='')
print('')
print(im.size,end='')
print('')
print(im.mode,end='')
如下图,在指定路径下可看到新保存的png格式的图片。
seek类
im.seek(frame)
在给定的文件序列中查找指定的帧。如果查找超越了序列的末尾,则产生一个EOFError异常。当文件序列被打开时,PIL库自动指定到第0帧上。
from PIL import Image
im_gif = Image.open("E:\mywife.gif")
print(im_gif.mode)
im_gif.show() ##第0帧
im_gif.seek(3)
im_gif.show()
im_gif.seek(9)
im_gif.show()
来来来这是gakki原图欣赏下
查找帧seek()的效果如下:
Paste类
im.paste(image,box)
将一张图粘贴到另一张图像上。变量box或者是一个给定左上角的2元组,或者是定义了左,上,右和下像素坐标的4元组,或者为空(与(0,0)一样)。如果给定4元组,被粘贴的图像的尺寸必须与区域尺寸一样。如果模式不匹配,被粘贴的图像将被转换为当前图像的模式。
from PIL import Image
im = Image.open("E:\mywife.jpg")
box=[0,0,100,100]
im_crop = im.crop(box)
print(im_crop.size,im_crop.mode)
im.paste(im_crop, (100,100)) ##(100,100,0,0)
im.paste(im_crop, (400,400,500,500))
im.show()
如下图为paste操作:
Tell类
im.tell() ⇒ integer
返回当前帧所处位置,从0开始计算.
from PIL import Image
im_gif = Image.open("E:\mywife.gif")
print(im_gif.tell())
im_gif.seek(8)
print(im_gif.tell())