2017-08-10 9 views
0

私の問題の背景は、モーションフォトのビデオデータ(私のサムスンS7撮影)を抽出したいということです。手動では簡単ですが時間がかかります。 .jpgファイルをHexEditorで開き、 "MotionPhoto_Data"という行の後にすべてのデータを抽出します。最初の部分は画像で、2番目の部分は動画です。.jpgファイルにデータをカットしてmpgファイルとして保存

私の現在のコード

im = 'test.jpg' 

with open(im, 'rb') as fin: 
    data = fin.read() 
    data_latin = data.decode('latin1') 
    fin.close() 

position = data_latin.find('MotionPhoto_Data') 

data_pic = data[:position] 
data_mpg = data[position:] 

私の問題は、今私はdata_picが働いビデオなどの作業JPGとdata_mpgとして保存されるような方法でこれらの文字列を保存する方法を見つけ出すcan'tということです。

私は

with open('test_pic.jpg', 'a') as fin: 
    fin.write(str(data_pic)) 
    fin.close() 

を試してみました。しかし、このdidn'tで働いていました。データの処理方法や保存方法には基本的な問題があると思いますが、これを修正する方法を見つけることはできません。

答えて

0

私はそれがそのようにタグ付けされているので、python 3を使用すると仮定します。

'data.decode(' latin1 ')でデコードしないでください。バイナリデータです。

data = fin.read() 

その後、後にバイナリデータとしてもそれを書く:それは私の問題を解決し

with open('test_pic.jpg', 'ab') as fout: 
    fout.write(data_pic) 
    fout.close() 
+0

感謝:) – Kai

+0

を今、私は再びそれを読んでいることを、あなたは「fout.closeを()」を使用してはなりません"with"ステートメントを使用する場合。 "with"ステートメントは "close"関数を使用する必要がないので、混乱します。 – cbodt

関連する問題