Python_用Pillow操作图像

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")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章