从文件读取图像像素的问题

时间:2019-02-11 21:08:58

标签: python image byte rgb unsigned-integer

我了解在Python中,可以使用PILImage之类的外部库来获取图像的所有像素的多种方法。有兴趣尝试我的二进制技能的人,我认为我会继续尝试使用文件中的二进制数据读取原始Python中的像素。这是我用作示例的图像:

The image I used in my program.

从其他问题中收集到的信息是,在处理之前,我需要将字节转换为一大堆无符号整数。我使用struct.unpack来做到这一点。到目前为止,这是我的程序:

import struct

with open('connect.jpg', 'rb') as fp:
    data = fp.read()
    print(struct.unpack("I"*int(len(data)/4), data))

这给了我一大堆疯狂的整数。我认为这些只是我必须转换的RGB整数,所以我做到了。这里有几个问题:

  • 像素列表只有2019长,而我的图像是320x240。

  • 像素颜色严重不足。我本来以为前几千个像素会接近rgb(0,0,0),但是我得到的是绿色,紫色,黄色,红色-一切。

作为参考,这是我用来将无符号整数转换为RGB元组的代码:

def rgb_int2tuple(rgbint):
    return (rgbint // 256 // 256 % 256, rgbint // 256 % 256, rgbint % 256)

我觉得我在这里采用了完全错误的方法。我可能无法将数据读取为正确的格式,还是我的int-to-RGB函数弄乱了?

0 个答案:

没有答案