将两个图像与PIL和numpy相结合后的质量损失

时间:2018-06-08 15:28:46

标签: python numpy python-imaging-library pillow

我正在使用PIL和numpy来组合两个图像,而一个是.jpg,另一个图像由一个numpy数组表示,它定义了一个我想要放在原始图像上的面具(基本上只是一个矩阵,其中一个和零条目以及与.jpg相同的大小。 PIL的复合函数适用于此,但由于某种原因,在保存合成图像后,文件大小缩小到原始图像大小的大约1/3。有人可以向我解释这种行为吗?

以下是代码段:

import numpy as np
import PIL
from PIL import Image
from PIL import ImageColor

rgb = ImageColor.getrgb('black')

# Read image and write into numpy array
image = Image.open('test_image.jpg')
(im_width, im_height) = image.size

# Create empty mask
mask = np.zeros((im_width, im_height))

# Composite image and mask
solid_color = np.expand_dims(np.ones_like(mask), axis=2) * 
  np.reshape(list(rgb), [1, 1, 3])
pil_solid_color = 
  Image.fromarray(np.uint8(solid_color)).convert('RGBA')
pil_mask = Image.fromarray(np.uint8(255.*mask)).convert('L')

image = Image.composite(pil_solid_color, image, pil_mask)

# save image
image.save('test_image_with_mask.jpg')

代码的灵感来自tnesorflow的对象检测API。提前谢谢。

0 个答案:

没有答案