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