用Pillow操作图像
- 1、颜色和RGBA值
- (1) ImageColor.getcolor获取某种颜色的RGBA值
- 2、坐标和Box元组
- 3、用Pillow操作图像
- (1).open加载图像、.size获取宽高、.filename名称、.save保存图片等
- (2).new创建一个100像素宽、200像素高,带有紫色背景的图片
- (3)getpixel()方法读取图片某一点的RGB值,putpixel()更改单个像素
- (4)crop()裁剪一个矩形区域的图像,并删除矩形之外的一切
- (5)copy()方法复制图片
- (6)paste()将一个图像粘贴到另一个图像上
- (7)resize()方法调整图像大小
- (8)rotate()旋转和翻转图像,transpose()镜像翻转
1、颜色和RGBA值
- RGBA值是一组数字如(128, 0, 128, 255),指定颜色中的红、绿、蓝和alpha(透明度)的值。值的范围是0~255。这些值是从0到255的整数。
- 这些RGBA值分配给单个像素,像素是计算机屏幕上能显示一种颜色的最小点;
- 像素的RGB设置准确的告诉他应该显示哪种颜色
名称 | RGBA值 |
White | (255,255,255,255) |
Green | (0,255,0,255) |
Red | (255,0,0,255) |
Blue | (0,0,255,255) |
Yellow | (255,255,0,255) |
Purple | (128,0,128,255) |
Black | (0,0,0,255) |
Gray | (128,128,128,255) |
(1) ImageColor.getcolor获取某种颜色的RGBA值
from PIL import ImageColor
print(ImageColor.getcolor('red', 'RGBA'))
# (255, 0, 0, 255)
2、坐标和Box元组
- 原点是位于图像左上角的像素,用符号(0,0)表示,第一个0表示x坐标,它以原点处为0,从左至右增加。第二个0表示y坐标,它以原点处为0,从上至下增加;
- Pillow函数和方法需要一个矩形元组参数,这意味四个整坐标的元组,表示图像中的一个矩形区域,四个整数顺序是:最左侧x坐标,最顶侧y坐标,最右侧x坐标,最底侧y坐标;如(3,1,9, 6)
3、用Pillow操作图像
(1).open加载图像、.size获取宽高、.filename名称、.save保存图片等
from PIL import Image
img = Image.open("cat.png")
width, height = img.size # 图片的宽度和高度
name = img.filename # 图片的名称
form = img.format # 图片的格式PNG、JPG等
img.save("new_cat.jpg") # 另存为新的图片
(2).new创建一个100像素宽、200像素高,带有紫色背景的图片
from PIL import Image
im = Image.new('RGBA', (100, 200), "purple")
im.save("purpleImage.png")
(3)getpixel()方法读取图片某一点的RGB值,putpixel()更改单个像素
from PIL import Image
from PIL import ImageColor
img = Image.open("purpleImage.png")
x, y = 12, 66
r, g, b, alpha = img.getpixel((x, y))
img.putpixel((x, y), (210, 210, 210)) # 第一种
img.putpixel((x, y), ImageColor.getcolor("Red", "RGBA")) # 第二种
img.save("putpixel.png")
(4)crop()裁剪一个矩形区域的图像,并删除矩形之外的一切
from PIL import Image
im = Image.open("purpleImage.png")
crop = im.crop((25, 30, 45, 50))
crop.save("new.png")
(5)copy()方法复制图片
from PIL import Image
im = Image.open("purpleImage.png")
imcopy = im.copy()
imcopy.save("imcopy.png")
(6)paste()将一个图像粘贴到另一个图像上
from PIL import Image
im = Image.open("purpleImage.png")
crop = Image.new('RGBA', (23, 23), "green")
w, h = im.size
c_w, c_h = crop.size
im2 = im.copy()
for left in range(0, w, c_w):
for top in range(0, h, c_h):
print(left, top)
im2.paste(crop, (left, top))
im2.save("paste.png")
(7)resize()方法调整图像大小
from PIL import Image
im = Image.open("purpleImage.png")
resize_img = im.resize(5, 8)
resize_img.save("resize_img.png")
(8)rotate()旋转和翻转图像,transpose()镜像翻转
from PIL import Image
im = Image.open("purpleImage.png")
im.rotate(30, expand=True).save("rotate.png")
im.transpose(Image.FLIP_LEFT_RIGHT).save("right.png")
im.transpose(Image.FLIP_TOP_BOTTOM).save("Top.png")