2017-02-10 13 views
1

ビットマップファイルをC++で開き、それを変更して別のビットマップファイルを作成しようとしています。問題は、ファイルのバイトを変更しなくてもofstreamでビットマップファイルを出力しようとすると、奇妙な出力が発生することです。ofstreamでビットマップファイルを作成すると奇妙な出力が発生する

1920 * 1080はRED、GREEN、BLUEの画像のサイズで、* 3は画像のサイズです。ビットマップファイルには54バイトのヘッダーがあることを知っています。したがって、正確には1920 * 1080 * 3 + 54バイトが6.bmpにあります。

入力されたとき:input

その後、私は、出力のためのthisを取得します。

(私はそれらをアップロードするために、両方の画像をリサイズが、両者は1920 * 1080です)

私は、Windows 8.1のG ++でこのコードをコンパイル。私はビットマップライブラリを使用したくありません。

+0

*ビットマップライブラリを使いたくない*実際にビットマップのサイズ変更は1行の 'fout'ループで行うことができると考えていましたか? – PaulMcKenzie

+0

ファイルのサイズを 'DIR'でチェックしましたか?パディングなどの理由で長さに関する仮定が間違っている可能性があるためです。 –

+0

入力ファイルと出力ファイルの実際のサイズはどれくらいですか? STLストリームはバイナリファイルにとっては良いことではなく、しばしば '\ 0'と' \ n'の使い方を変えます。 – ilotXXI

答えて

0

Windowsでは、foutもバイナリモードで開く必要があります。そうしないと、0x0dバイトが0x0aバイトごとに自動挿入され、出力ファイルが破損します。

関連する問題