解释图像的字节数组
Interpret byte array of an image
图像的字节数组中存储了什么?我正在做一个项目,需要解释存储在图像字节数组中的内容。我们如何解释字节数组的元素?
注意:以下是python中生成字节数组的代码
from array import array
f = open("temp.jpg", "rb")
bytes = bytearray(f.read())
你已经用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
相关文章:
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 如何在C++中将整数转换为其数字数组
- 如何将带有不定条目的行读取到数字数组中?
- 对于非常大的输入,缺少和重复 1..n 的数字数组.使用1..n系列特性的解决方案.溢出问题
- 有没有一种方法可以接受数字数组而不接受垃圾值的输入
- 从数字数组中删除重复
- 如何打印给定i和j的数字数组,使得i的所有元素的总和等于j
- 将数字与数字数组进行比较
- 将数字数组保存到Spesific文件中,然后稍后调用
- 从排序的数字数组中返回数字范围的最快方法是什么?
- 如何通过libpq c api插入字节的数组
- 无法让我的代码正确排序用户输入的数字数组(使用递归)
- i2c中的字节指针数组
- 以 C++ 为单位递增 16 字节字符数组
- new[] 一个包含构造函数的字节对象数组没有错,对吧?
- 创建未知长度的字节/字符数组
- 我如何将bitset转换为字节/uint8数组
- C++ <--> C# 修改字节编组数组
- 将m个字节的数组拆分为n个字节的块
- c++到c#:有3个元素的字节指针数组等于什么?