我在PIL中打开了一个图像:
from PIL import Image
i = Image.open("image.jpg")
我需要访问此文件的原始内容。如何获取整个图片数据,就好像我会完成open(...).read()
?
答案 0 :(得分:12)
你可以看到这个答案python Image PIL to binary Hex
需要再次保存img对象;把它写给另一个BytesIO 对象:
output = io.BytesIO() img.save(output, format='JPEG')
然后使用.getvalue()方法获取书面数据:
hex_data = output.getvalue()
答案 1 :(得分:6)
如果您想获得图像的实际字节,请使用i.tobytes()
。这与Pillow
一致,我不确定它是否在原始PIL
模块中,而是来自应该是的文档。
答案 2 :(得分:2)
PIL使用延迟打开机制,只在需要时才读取文件内容。 如果这样做,它可能会将文件引用保留在某个内部(私有)属性中。
即使这个属性是可访问的,它肯定不会作为官方PIL API的一部分公开 - 它肯定不会以这种方式使用。
读取数据后,文件内容将被解码,并作为像素值保存在内存中 - (这通常是处理图像时所需要的)。该库肯定不会将未解码的文件数据保存在内存中的数据结构中,因为它没有意义。
如果您使用原始文件内容,则可能会使用某些内容处理图像 其他模块,或存储它,或以不可知的形式迭代数据 对于实际的图像内容 - 你不能只用普通的"打开"来打开文件?
答案 3 :(得分:1)