什么存储在图像的字节数组中? 我正在开发一个项目,在该项目中需要解释存储在图像的字节数组中的内容。 我们如何解释字节数组的元素?
注意: 以下是python中用于生成字节数组的代码
from array import array
f = open("temp.jpg", "rb")
bytes = bytearray(f.read())
答案 0 :(得分:0)
您已使用python-imaging-library对此进行了标记,但您在问题的任何位置都没有提及它,而且您还没有使用它。
我强烈怀疑你实际上希望使用它。您对构成JFIF标头,压缩图像数据,EXIF段等的字节数组不感兴趣;你想要一个像素值数组。
因此,首先必须安装Python映像库。现代版本的名称为Pillow,文档有完整的安装说明,但通常只有pip install pillow
。
现在,您可以在脚本中使用它:
>>> from PIL import Image
>>> img = Image.open("temp.jpg")
>>> img.mode
'RGB'
>>> img.getpixel((0, 0))
(3, 148, 231)
Image
对象已经类似于数组了。 mode
让我知道这是一个8位RGB图像,因此每个像素将有3个值 - 红色,绿色和蓝色强度,从0到255.而getpixel((0, 0))
会将红色返回给我左上角像素的绿色,蓝色和蓝色值。
如果你真的想要一个平面阵列,你也可以这样做:
>>> img.getdata()[0]
(3, 148, 231)
或者,如果你想要一个扁平的字节数组(交替红 - 蓝 - 绿 - 红 - 蓝 - 绿)而不是元组:
>>> img.getbytes()[0]
3