2017-09-15 6 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() 

このコードが正しいかどうかはわからないが、それはこのコードが持っている場合、私は、やりたいことができますエラーこのコードが間違っている場合は、私はそれを行う別の方法を与えることができます訂正してください?

感謝のPython 3では

+0

は難しいですね。たぶん手動ビット反転の代わりに枕を使うべきでしょう。 – Kevin

答えて

1

あなたがバイナリファイルを読み込むときに、あなたは整数値(0〜255)が、不変のlistのようなものですbytesオブジェクトを取得します。実行して

スタート:

data = list(in_file.read()) 

を今、あなたはあなたの次のループで変更することができ整数のリストを持っています。あなたが値を変更したら書くとき

、ちょうどbytesに戻って変換します。

out_file.write(bytes(data)) 
関連する問題