我正在开发一个程序,将某些效果应用于图像。为此,我想使用字节,这是一个问题。

我需要选择一个图像文件并获取包含字节的INTEGER列表,然后修改此列表,然后使用新列表保存新文件。

我有以下代码,但无法以这种方式设置整数值:

in_file = open(input('Input image: '), "rb")
data = in_file.read()
in_file.close()

for num in range(0, len(data), 4):
    b = int(data[num])
    print(b)
    g = int(data[num + 1])
    r = int(data[num + 2])
    a = int(data[num + 3])
    media = (b + g + r) / 3
    data[num] = media
    data[num + 1] = media
    data[num + 2] = media

out_file = open(input('Output image: '), "wb")
out_file.write(data)
out_file.close()


我不知道此代码是否正确并且可以执行我想要的操作,如果此代码有错误,请更正它,如果此代码完全错误,您可以给我另一种方法吗?

谢谢

最佳答案

在Python 3中,当您读取二进制文件时,会得到一个bytes对象,该对象类似于整数值(0-255)但不可变的list

首先开始:

data = list(in_file.read())


现在,您有了可以在以下循环中修改的整数列表。

更改值后,在编写时只需转换回bytes即可:

out_file.write(bytes(data))

关于python - 使用python按字节修改图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46242835/

10-12 13:09