2

このコードでは、2 つの同じ解像度の PNG 画像の違いを取得し、その違いを保存しています。JPEG での保存は正常に機能しますが、PNG では完全に透明な PNG 画像ファイルが生成されます。最後の 2 行のコメントを見てください。

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]
4

1 に答える 1

4

元の画像にはアルファ チャネル (RGBA) がある可能性があります。事前に知っておく必要があります。また、Image.open が生成する画像タイプの結果を確認する必要があります (Image.modeまたはをImage.info参照)。とにかく、<image>.convert('RGB')違いを行う前または後に を呼び出すことで、RGB タイプ (アルファチャンネルなし) を強制できます。

于 2013-03-31T13:48:24.987 に答える