Python 操作图像

Python 操作图像

我的努力求学没有得到别的好处,只不过是愈来愈发觉自己的无知 ——笛卡儿

操作图像

  • python 要是想操作图像 必须要安装 pillow 模块

安装 pillow 模块


pip install pillow

解析颜色,获取图片信息,另存为图片

  • getcolor

from PIL import ImageColor

result = ImageColor.getcolor('red', 'RGBA')

print(result)

# 结果

# (255, 0, 0, 255)

Pillow 函数和方法需要一个矩形元祖参数。所以 Pillow 需要一个有四个整坐标的元祖.表示图像中一个矩形区域。四个整数按顺序分别是

1.左 该矩形的最左边的 X 坐标

2.顶 该矩形的顶边 y 坐标

3.右 该矩形的最右边右面一个像素的 X 坐标。此整数必须比左边大

4.底 该矩形的底边下面一个像素的 Y 坐标,此整数必须比顶边整数大

  • Image.open() 打开图片

from PIL import Image

picall = Image.open('lazyimg.jpg')  # 打开图片

print(picall.size)  # 一个元祖 获取到图片的宽度和高度

print(picall.size[0])  # 宽度

print(picall.size[1])  # 高度

print(picall.filename)  # 文件名

print(picall.format)   # 后缀名

print(picall.format_description)  # 描述

picall.save('222.jpg')  # 另存为其他名字的图片

画图片

  • 画图片 new save

from PIL import Image

im = Image.new('RGBA', (100, 200), 'purple')

im.save('123232.png')

我们创建了一个图像 它有 100 像素宽,200 像素高,带有紫色背景

裁剪图片

  • 裁剪图片值得是在图像里面选择一个矩形区域,删除矩形区域以外的内容

  • crop() 矩形元祖


from PIL import Image

picall = Image.open('lazyimg.jpg')  # 打开图片

imgcrop = picall.crop((335, 345, 565, 560))  # 开始裁剪

imgcrop.save('裁剪.png')

# 结果生成

# 生咸新的图片

复制和粘贴图像到其他图像

  • copy()

from PIL import Image

picall = Image.open('lazyimg.jpg')  # 打开图片

catimgall = picall.copy()  # 获取到拷贝

cropimg = Image.open('裁剪.png')  # 获取到裁剪的图片

catimgall.paste(cropimg, (0, 0))

catimgall.save('新的图片.png')
  • paste()粘贴

特别注意的就是 paste 是在原图上粘贴复制 修改原图,所以使用前一定要先拷贝一份


from PIL import Image

picall = Image.open('lazyimg.jpg')  # 打开图片

catimgall = picall.copy()  # 获取到拷贝

cropimg = Image.open('裁剪.png')  # 获取到裁剪的图片

catimgall.paste(cropimg, (0, 0))

catimgall.save('新的图片.png')

调整图片大小

  • resize() 方法 里面传递的必须是元祖

from PIL import Image

picall = Image.open('lazyimg.jpg')  # 打开图片

width = picall.size[0]   # 宽度

height = picall.size[1]  # 高度


picall_item = picall.resize((int(width/2), int(height/2)))

picall_item.save("缩小版本.png")

旋转和翻转图像

  • rotate()

旋转后宽度和高度肯定变了,这个时候如果需要填充像素就需要加入 expand=True


from PIL import Image

picall = Image.open('lazyimg.jpg')  # 打开图片

picall.rotate(90, expand=True).save('lazyimg222.jpg')

# 旋转 90deg

更改单个像素

  • 单个像素的颜色可以通过 getpixel()和 putpixel()方法他们都接受一个元祖.表示像素 x 和 y 的坐标

from PIL import Image

from PIL import ImageColor

im = Image.new('RGBA', (100, 200))

im.getpixel((0, 0))

for x in range(100):
    for y in range(50):
        im.putpixel((x, y), (210, 210, 210))

for n in range(100):
    for m in range(50, 100):
        im.putpixel((x, y), ImageColor.getcolor('black', 'RGBA'))

im.getpixel((0, 0))

im.getpixel((0, 50))
im.save('画图.png')

文章作者: 雾烟云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 雾烟云 !
  目录