一、Image的format、size、mode、show
#不需要关注文件格式,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()
![6d10fa3365265f4e71debc4891bf4dad.png](https://i-blog.csdnimg.cn/blog_migrate/c1b0f514c72b9631287f7829221e5cf0.jpeg)
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()
![39d7485c2c2116e208af364340b8ab55.png](https://i-blog.csdnimg.cn/blog_migrate/715f2b289da5808ce5fcb33f67cdfa52.jpeg)
region.show()显示的图片 300x200的图片
#转动图片,以便看到效果region = region.transpose(Image.ROTATE_180)im.paste(region, box)im.show()
![99430b8c5e4f5b63ffa42e454cd60877.png](https://i-blog.csdnimg.cn/blog_migrate/5012005804978549275edccd2b18c824.jpeg)
图片选择的不是和合适,效果不是很明显
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方法,不会立即执行,
![7d413370a32ccead6561e0619a16e4a1.png](https://i-blog.csdnimg.cn/blog_migrate/f531d9d06c967db0ae15f3aca267692a.jpeg)
图片转场特效使用的实例图片
图层的分离与合并 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")
![05294220ec4b678a95d2a6dd38db6ee0.png](https://i-blog.csdnimg.cn/blog_migrate/7c3786bb40ccb15908dd16022503d960.jpeg)
r图层显示效果
![a3c5f2f1362cde393cef4cfb87a60dbb.png](https://i-blog.csdnimg.cn/blog_migrate/6ff4e9c472d0a2a94d5adb15b3eae70c.jpeg)
g图层显示效果
![2ca3452518d9a147b525e2006aec73e8.png](https://i-blog.csdnimg.cn/blog_migrate/f83b3117cf1f3e6d3913f26c784aecbf.jpeg)
b图层显示效果
![e6197a03117a43b6a9443100fcf37a70.png](https://i-blog.csdnimg.cn/blog_migrate/39e4851c11c98b321ce1b64db2e33a64.jpeg)
bgr图层显示效果
![120098dcb05906996caed90774d211d7.png](https://i-blog.csdnimg.cn/blog_migrate/6eddec71089046306b1595415a98027a.jpeg)
brg图层显示效果
四、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")
![3e19913306c76838edf8880c180cca5a.png](https://i-blog.csdnimg.cn/blog_migrate/88e7870956ba60172632c4cc74283ab3.jpeg)
im.resize((64, 128))的效果
![fea98646b0da4c62b78890f23fe890b7.png](https://i-blog.csdnimg.cn/blog_migrate/2f56bd5799d43dce5f231c8bce6a33f2.jpeg)
im.rotate(45) 的效果
![bd1a420e77b509e5685d1ad8d62e8682.png](https://i-blog.csdnimg.cn/blog_migrate/979058d32fb75838a9475f981f6f399d.jpeg)
im.transpose(Image.FLIP_LEFT_RIGHT)左右变坏的效果
在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")
![463cc85aad28da5c2fc569281de9a98b.png](https://i-blog.csdnimg.cn/blog_migrate/22533acb67a57b22b109a4caa01941c0.jpeg)
fillcolor=(255,255,255)显示的效果
未完待续...
本例参考网站
https://pillow.readthedocs.io/en/5.2.x/handbook/tutorial.html
#科技青年# #423头条知识节#