我正在开发一个程序,它会对图像应用一些效果。要做到这一点,我想使用字节,这里我有一个问题。
我需要选择一个图像文件并获取一个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()
我不知道这段代码是否正确并且它可以做我想要的,如果此代码有错误请更正,如果此代码完全错误可以你能给我另一种方法吗?
由于
答案 0 :(得分:1)
在Python 3中,当您读取二进制文件时,会得到一个bytes
对象,它类似于list
整数值(0-255)但是不可变。
首先:
data = list(in_file.read())
现在您有一个可以在以下循环中修改的整数列表。
更改值后,只需在写入时转换回bytes
:
out_file.write(bytes(data))