2017-06-16 56 views
1

在这3行代码之后,我不明白为什么图像不同。在我看来,图像应该是相同的。Python为什么图像在tobytes()和bytes()之后有所不同?

from PIL import Image 

phone_img = Image.open("img2.png") 
phone_img1 = Image.frombytes(phone_img.mode, phone_img.size, phone_img.tobytes()) 
phone_img1.save("img2_new.png","PNG") 



img2.png: http://666kb.com/i/dk4ykapuzs4wc2e4g.png 
img2_new.png: http://666kb.com/i/dk4ykz98cg97grxts.png 

回答

0

我不是一个大PIL /枕头用户,但是:

  • 您与Image.open()
    • 返回的对象类型Image
    • 它拥有更多的打开你的形象比纯像素数据(如您使用.mode,.size所示)
  • 通过将完整对象解释为仅用于像素数据来创建新图像!
    • 最后一部分也许应该像frombytes(phone_img.mode, phone_img.size, phone_img.getdata())
    • 根据LIB,应该照顾位模式下运行过(例如8位与16位)
相关问题