TIFF を PDF に変換しているときに、一部の PDF が破損していることに気付きました。いくつかの調査の後、問題は System.Drawing.Image クラスにあるようです。これをテストするために、PDF に変換する代わりに、プログラムに画像ファイルを読み込んで再保存してもらいました。新しく保存されたファイルの中には、プログラムの異なる実行間でファイル サイズが一致しないものがあります。基本的な手順は次のとおりです。
- TIFF イメージをバイト配列に読み込みました。
- System.Drawing.Image.FromStream() メソッドを使用して、バイト配列からイメージ オブジェクトを作成します。
- 次に、System.Drawing.Image.Save(stream) メソッドを呼び出して、画像を新しいストリームに保存します。
- 次に、stream.ToArray() メソッドの長さを調べます。
同じ入力ファイルでも、連続するプログラムの実行間で出力の長さが異なります。出力の長さは数百バイト異なります。さらに、結果として得られる出力の長さは入力の長さの 2 倍以上になりますが、これは圧縮または圧縮不足によるものだと思います。私は.net 4を搭載したWindows 7 32ビットでこれを実行しています。
出力の長さがこのように異なるのはなぜですか?
アップデート:
この接続の問題 ( https://connect.microsoft.com/VisualStudio/feedback/details/584681/system-drawing-image-flags-has-different-value-in-vista-and-windows-7 ) とこの MSDN ページ ( http://msdn.microsoft.com/en-us/library/system.drawing.image.save.aspx ) のコミュニティ コメントによると、この問題は Windows 7 のオペレーティング システム レベルのバグに関連しているようです。誰でもこれを確認したり、回避策を提供したりできますか?