在获取两个PNG文件的ImageChops.difference之后保存为PNG(使用PIL库)正在生成透明(或白色)PNG图像文件

时间:2013-03-30 17:40:12

标签: python image png python-imaging-library

在这段代码中,我将两个相同分辨率的PNG图像区别开来,然后保存差异。保存为JPEG工作正常,但在PNG中,它产生一个完全透明的PNG图像文件。看看最后两行的评论

import Image
import ImageChops
js_black_im = Image.open("/js_black.png")
js_white_im = Image.open("/fb_white.png")
diff_im = ImageChops.difference(js_black_im, js_white_im)
diff_im.save("/js_onlytext.jpeg", "JPEG") #this works as expected
diff_im.save("/js_onlytext.png", "PNG") #this produces a total tranparent PNG image file![js_black.png][1]![fb_black.png][2]

1 个答案:

答案 0 :(得分:2)

也许您的原始图像具有Alpha通道(RGBA),您应该事先知道,和/或检查结果Image.open生成的图像类型(查看Image.modeImage.info) 。无论如何,你可以在做差异之前或之后通过调用<image>.convert('RGB')来强制RGB类型(没有alpha通道)。