#不需要关注文件格式,PIL会自动处理im = Image.open("background.jpg")print(im.format,im.size,im.mode)#JPEG (2287, 1080) RGB'''format 指文件格式、size 文件大小 tuple(width,heigh)mode L 黑白,RGB普通RGB,CMYK 预压缩图片'''#显示图片,非Image本身显示图片,而是系统借助第三方图片程序显示,若系统没有安装,则显示失败im.show()
二、Image的保存
from PIL import Image#不需要关注文件格式,PIL会自动处理im = Image.open("background.jpg")#如果有文件扩展名,Image自动识别保存图片格式#im.save("new_background.jpg")#如果没有文件扩展名,需要指定文件扩展名im.save("new_background","JPEG")
三、复制、粘贴、合并图层
选取内容框
from PIL import Image#不需要关注文件格式,PIL会自动处理im = Image.open("background.jpg")#box的坐标 官方的说法left, upper, right, lower,转换一下就是#起始点列column,起始行row,生成的宽度(列column),生成的高度(行row)box=(100,200,400,400)#获取赋值的矩形region=im.crop(box)print(region)#region.show()
#转动图片,以便看到效果region = region.transpose(Image.ROTATE_180)im.paste(region, box)im.show()
crop的懒加载
from PIL import Image#不需要关注文件格式,PIL会自动处理im = Image.open("background.jpg")def roll(image, delta): """图片的转场特效,本例中使用1图片,左右转场""" xsize, ysize = image.size delta = delta % xsize if delta == 0: return image #crop方法不会立即执行 part1 = image.crop((0, 0, delta, ysize)) part2 = image.crop((delta, 0, xsize, ysize)) #如遇到 load 方法crop才会加载,否则crop方法到paste方法时才会执行 part1.load() part2.load() image.paste(part2, (0, 0, xsize-delta, ysize)) image.paste(part1, (xsize-delta, 0, xsize, ysize)) return imagefor i in range(100): newimg=roll(im,i) newimg.show()
crop方法,不会立即执行,
图层的分离与合并 splite、merge
from PIL import Image#不需要关注文件格式,PIL会自动处理im = Image.open("background.jpg")r, g, b = im.split()print(r)#r.show()r.save("r.jpg")g.show()g.save("g.jpg")b.show()b.save("b.jpg")#不同顺序的结果im = Image.merge("RGB", (b, g, r))im.show()im.save("bgr.jpg")#不同顺序的结果im = Image.merge("RGB", (b, r, g))im.show()im.save("brg.jpg")
四、transposing(转换)图片
from PIL import Image#不需要关注文件格式,PIL会自动处理im = Image.open("background.jpg")#更改图片大小,注意是返回值形式(必须把resize之后的对象赋值),不是引用形式,#resize(width,heigh)im = im.resize((64, 128))im.show()im.save("resize128.jpg")#逆时针旋转 度为正im = im.rotate(45) im.save("rotate45.jpg")#transpose 参数的还有#Image.FLIP_TOP_BOTTOM#Image.ROTATE_90#Image.ROTATE_180#Image.ROTATE_270#...im = im.transpose(Image.FLIP_LEFT_RIGHT)im.save("transpose.jpg")
在rotate中,默认参数,会有黑色区域,可以通过rotate的命名参数fillcolor=(255,255,255)
from PIL import Image#不需要关注文件格式,PIL会自动处理im = Image.open("background.jpg")#更改图片大小,注意是返回值形式(必须把resize之后的对象赋值),不是引用形式,#resize(width,heigh)im = im.resize((64, 128))#逆时针旋转 度为正,(255,255,255)为想要留出的颜色im = im.rotate(45,fillcolor=(255,255,255)) im.save("rotate45.jpg")
未完待续...
本例参考网站
https://pillow.readthedocs.io/en/5.2.x/handbook/tutorial.html
#科技青年# #423头条知识节#