background图片不显示_python PIL Image 图片处理的基础使用方法Tutorial (一)

一、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

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

region.show()显示的图片 300x200的图片

#转动图片,以便看到效果region = region.transpose(Image.ROTATE_180)im.paste(region, box)im.show()
99430b8c5e4f5b63ffa42e454cd60877.png

图片选择的不是和合适,效果不是很明显

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

图片转场特效使用的实例图片

图层的分离与合并 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

r图层显示效果

a3c5f2f1362cde393cef4cfb87a60dbb.png

g图层显示效果

2ca3452518d9a147b525e2006aec73e8.png

b图层显示效果

e6197a03117a43b6a9443100fcf37a70.png

bgr图层显示效果

120098dcb05906996caed90774d211d7.png

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

im.resize((64, 128))的效果

fea98646b0da4c62b78890f23fe890b7.png

im.rotate(45) 的效果

bd1a420e77b509e5685d1ad8d62e8682.png

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

fillcolor=(255,255,255)显示的效果

未完待续...

本例参考网站

https://pillow.readthedocs.io/en/5.2.x/handbook/tutorial.html

#科技青年# #423头条知识节#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值