2017-09-15 60 views
1

我正在開發一個程序,它會對圖像應用一些效果。要做到這一點,我想使用字節,在這裏我有一個問題。用python修改圖像的字節數

我需要選擇一個圖像文件,並獲取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

聽起來很難。也許你應該使用枕頭而不是手動翻轉。 – Kevin

回答

1

在Python 3,當你讀一個二進制文件,你會得到一個bytes對象,這就好比是整數值的list(0-255),但不可改變的。

開始這樣做:

data = list(in_file.read()) 

現在你可以在你的下面的循環修改整數列表。

一旦你改變了值,只是寫的時候轉換回bytes

out_file.write(bytes(data))