这次的记录依然来源于互联网上诸位前辈总结,对我的学习起到很大帮助作用,在此先作致谢
pillow中的RGBA表示有四个元素的元组,元素分别是'r','g','b','a'。'r','g','b'为三原色,它们都有个0~255内的整数值,它们全255表示黑色,'a'为透明度,如果'a'为0其它颜色都不会显示,因为'a'为0表示透明
pillow中的图像坐标以左上角为原点(0,0),x轴向右递增,y轴向下递增。用这样的坐标系以一个包含四个元素的元组表示一个矩形区域,分别代表矩形四条边的距离X轴或者Y轴的距离。顺序是(左,顶,右,底)
。右和底坐标稍微特殊,表示直到但不包括。可以理解为[左, 右)
和[顶, 底)
这样左闭右开的区间。比如(3, 2, 8, 9)就表示了横坐标范围[3, 7];纵坐标范围[2, 8]的矩形区域。
以
下是pillow中Image模块的一些功能用法
>>> from PIL import Image
>>>
>>> im_path = r"C:\Users\Administrator\1pthw\r11.png"
#用open()函数读取图片
>>> im = Image.open(im_path)
>>> width, height = im.size
#输出宽高
>>> print(im.size, width, height)
(153, 153) 153 153
#输出格式,及格式的详情
>>> print(im.format, im.format_description)
PNG Portable network graphics
#保存到新路径并重新命名(可做复制)
>>> im.save(r"D:\rong\rll_copy.png")
#显示图片
>>> im.show()
im.size
返回一个元组,分别是宽和高。show()
方法会调用系统默认图像查看软件,打开并显示。im.format
可查看图像的格式。save()
可保存处理后的图片,如果未经处理,保存后的图像占用的空间(字节数)一般也与原图像不一样,可能经过了压缩。
>>> newIm = Image.new('RGB', (100, 100), 'red')
>>> newIm.save(r"D:\rong\1.png")
Image.new()创建了一个新的图片,第一个参数是mode即颜色空间模式,第二个参数指定了图像的分辨率(宽x高),第三个参数是颜色。
im = Image.open(im_path)
>>> cropedIm = im.crop(500, 500, 550, 550)
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
cropedIm = im.crop(500, 500, 550, 550)
TypeError: crop() takes from 1 to 2 positional arguments but 5 were given
#裁剪图片,crop()参数为一个元组
>>> cropedIm = im.crop((500, 500, 550, 550))
>>> cropedIm.save(r"D:\rong\2.png")
#复制
>>> copyIm = im.copy()
#将图片粘贴到另一张图片
>>> copyIm.paste(cropedIm, (0, 0))
>>> im.show()
>>> copyIm.save(r"D:\rong\3.png")
>>> copyIm.show()
#调整图片大小
>>> resizedIm = im.resize((width, height + (550 - 200)))
>>> resizedIm.save(r"D:\rong\4.png")
>>> resizedIm.show()
#旋转图片
>>> im.rotate(90).save(r"D:\rong\4.png")
>>> im.show()
#图片模式转换
>>> convertedIm = copyIm.convert('L')
>>> convertedIm.save(r"D:\rong\5.png")
>>> convertedIm.show()
Image.crop():裁剪图片,它接收一个元组参数,上面出现错误,就是这个参数的问题
Image.copy():复制图片
Image.paste():将一个图片粘贴(覆盖)到另一个图片,会在调用它的Image上直接做修改
Image.resize():调整图片大小
Image.rotate():旋转图片
Image.convert():图片模式转换,'L'表示灰色图,'GRB'表示彩图
使用pillow中的ImageFilter可以做简单的图片处理
>>> from PIL import Image, ImageFilter
>>> im_path = r"C:\Users\Administrator\1pthw\r11.png"
>>> im = Image.open(im_path)
#高斯模糊
>>> im.filter(ImageFilter.GaussianBlur).save(r"D:\rong\6.png")
#普通模糊
>>> im.filter(ImageFilter.BLUR).save(r"D:\rong\7.png")
#边缘增强
>>> im.filter(ImageFilter.EDGE_ENHANCE).save(r"D:\rong\8.png")
#找到边缘
>>> im.filter(ImageFilter.FIND_EDGES).save(r"D:\rong\9.png")
#浮雕
>>> im.filter(ImageFilter.EMBOSS).save(r"D:\rong\10.png")
#轮廓
>>> im.filter(ImageFilter.CONTOUR).save(r"D:\rong\11.png")
#锐化
>>> im.filter(ImageFilter.SHARPEN).save(r"D:\rong\12.png")
#平滑
>>> im.filter(ImageFilter.SMOOTH).save(r"D:\rong\13.png")
#细节
>>> im.filter(ImageFilter.DETAIL).save(r"D:\rong\14.png")