pillow Image 继续学习整理

这次的记录依然来源于互联网上诸位前辈总结,对我的学习起到很大帮助作用,在此先作致谢

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")

猜你喜欢

转载自blog.csdn.net/weixin_42112678/article/details/81231170