您的位置:首页 > 编程语言 > Python开发

Pillow学习之Tutorial

2017-03-05 23:27 78 查看

导入

from PIL import Image


打开图片

#方式一:
im = Image.open('1.jpg')
#方式二
f = open('1.jpg','rb')
im = Image.open(f)
#从tar压缩文件打开
from PIL import TarIO
fp = TarIO.TarIO('2.tar','1.jpg')  #压缩文件名   图片名
im = Image.open(fp)


查看格式

im.format


查看大小

im.size


查看模式

im.mode


查看文件名

im.filename


查看位数

im.bits


显示图片

im.show()


保存图片

im.save('1.bmp')


查看高度

im.height


查看宽度

im.width


缩略图

size = (500,500)    #缩略图大小
im.thumbnail(size)  #原图的相似图,宽高中较大值为500


复制图片

tn = im.copy()


截取图片

box = (100,100,400,400)  #定义截取的左上右下边界
region = im.crop(box)  #一种懒方法,可用load提前执行


旋转图片

region = region.transpose(Image.ROTATE_180)#顺时针旋转180°
out = im.rotate(45) #将图片逆时针旋转45°


粘贴图片

im = im.paste(region, box)


分离RGB

r,g,b = im.split()   #分离RGB通道


合成RGB

im = Image.merge("RGB",(g,r,b))  #用RGB通道合成新图


更改大小

size = (500,500)    #图片大小设定
out = im.resize(size)


置换图片

out = im.transpose(Image.FLIP_LEFT_RIGHT)  #0
out = im.transpose(Image.FLIP_TOP_BOTTOM)  #1
out = im.transpose(Image.ROTATE_90)        #2
out = im.transpose(Image.ROTATE_180)       #3
out = im.transpose(Image.ROTATE_270)       #4
out = im.transpose(Image.TRANSPOSE)        #5


模式转换

out = im.convert('L')        #将图片转换成黑白图


使用滤镜

from PIL import ImageFilter     #导入滤镜模块
out = im.filter(ImageFilter.DETAIL)


point操作

out = im.point(lambda i:i*1.5)


图片增强

from PIL import ImageEnhance    #导入图片增强模块
enh = ImageEnhance.Contrast(im)
enh.enhance(1.3).show("30% more contrast")  #对比度增加30%


动态图片

im = Image.open('2.gif')     #打开一张动态图片,默认第0帧
im.n_frames                #查看动态图帧数
im.tell()                  #当前帧数
im.seek(i)                  #查找第i帧
im.show()                  #显示第i帧内容


 使用ImageSequence

from PIL import ImageSequence     #导入ImageSequence
for frame in ImageSequence.Iterator(im):    #使用迭代器
im.show()               #显示各帧图片


 获取Bands

im.getbands()

 


将图片左右置换

from PIL import Image
import os, sys

def roll(image, delta):
"Roll an image sideways"
xsize, ysize = image.size
delta = delta % xsize
if delta == 0:
return image
part1 = image.crop((0, 0, delta, ysize))
part2 = image.crop((delta, 0, xsize, ysize))
part1.load()
part2.load()
image.paste(part2, (0, 0, xsize-delta, ysize))
image.paste(part1, (xsize-delta, 0, xsize, ysize))
return image

if __name__ == '__main__':
im = Image.open(sys.argv[1])
im.show()
delta = int(sys.argv[2])
re = roll(im, delta)
re.show()


常见模式

• 1 (1-bit pixels, black and white, stored with one pixel per byte)
• L (8-bit pixels, black and white)
• P (8-bit pixels, mapped to any other mode using a color palette)
• RGB (3x8-bit pixels, true color)
• RGBA (4x8-bit pixels, true color with transparency mask)
• CMYK (4x8-bit pixels, color separation)
• YCbCr (3x8-bit pixels, color video format)
– Note that this refers to the JPEG, and not the ITU-R BT.2020, standard
• LAB (3x8-bit pixels, the L*a*b color space)
• HSV (3x8-bit pixels, Hue, Saturation, Value color space)
• I (32-bit signed integer pixels)
• F (32-bit floating point pixels)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Pillow Python 图片处理