Pillow学习之Tutorial

导入
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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值