文字列として保存されている画像ファイルのデータを、その文字列を含む画像ファイルに書き込みます。
std::ofstream f("image.jpeg");
f << image_data; // image_data was created using python and copied over, in hex and turned back into ascii
それでも、予期しないことが起こります。
になります:
なぜこれが起こっているのか理解できません。
python2.7 を使用して元の画像からデータを取得し、それを新しいファイルに書き込むと、正常に動作します。
ubuntuでプログラムをコンパイルして実行すると、画像がうまく表示されます。
大きなテキスト ファイル (画像よりも大きい) を .txt に書き込むと、ファイルは問題なく出力されます。
失敗するのは Windows 上の jpeg だけです。私が試した元の画像は、PGP キー パケットからの画像で、人物の頭の半分がクリアで、残りの半分が台無しになっているものでした。
上で述べたように、元の画像の一部が表示されているため、コンパイルされたプログラムはすべてのデータを台無しにするわけではありません。また、画像は同じサイズなので、少なくとも jpeg 形式は保持されました。
何が起こっている?Windows 7 の Code::Blocks で ming2 4.7.2 を使用しています。