如何将PNG图像转换为JPG

时间:2019-08-08 14:14:49

标签: python python-imaging-library

我正在尝试在python上实现某些目标。

我想比较2张图片,看看它们有多相似。我找到了SSIM方法,但是我的图像可能具有不同的分辨率和色彩模式,因此无法与SSIM-PIL进行比较。

我的想法是将png图像转换为jpg,但是当我这样做时,所有背景都会变成黑色,这会导致以后的操作混乱。

我知道Pillow有用于图像的方法convert(),但是如果我将RGBA彩色模式的图像转换为RGB,背景就会变成黑色。

有什么建议吗?

编辑

请不要再说另一个类似的问题可能对我有帮助,因为它没有帮助。

2 个答案:

答案 0 :(得分:0)

类似于其他人所说的,JPG图像缺少任何可促进透明度的通道。建议您在不知道自己拥有哪些图像以及要使用它们完成什么的情况下,将它们都转换为PNG图像,然后将它们都转换为RGB numpy arrays,然后编写您自己的差异函数可根据需要测量差异。一个简单的例子可能是:

def pixel_difference(pixel_a, pixel_b):
    sum = 0
    for i in range(len(pixel_a)):
        sum += (pixel_a[i]-pixel_[b])**2 # Take square sum

    return sum**0.5 # Return square root

def two_image_difference(image_a, image_b):
    sum = 0
    for x in range(image_a.shape[0]):
        for y in range(image_a.shape[1]):
            sum += pixel_difference(image_a[x,y], image_b[x,y]) 

    return sum

如果您需要更高级的产品,也可以考虑使用image cross-correlation。希望这会有所帮助!

答案 1 :(得分:0)

尝试将PNG粘贴在白色背景上:

from PIL import Image
img = Image.open('your.png')
new_img = Image.new("RGBA", img.size, "WHITE") 
new_img.paste(img, (0, 0), img)            
new_img.convert('RGB').save('your.jpg', "JPEG")