私は.NETフレームワーク(3.5と4.0を試しました)を使用して.TIFFファイルをロードし、.PNGとして保存しています。(同じ TIFF ファイルを使用して) Save() メソッドを 2 回続けて呼び出すと、同じ PNG ファイルが生成されると思います。ただし、生成されるファイルは「場合によっては」異なります。
以下の C# コードは、問題を示しています。
Image sourceToConvert = Bitmap.FromFile("c:\\tmp\\F1.tif");
sourceToConvert.Save("c:\\tmp\\F1_gen.png", ImageFormat.Png);
for (int i = 0; i < 100; i++)
{
sourceToConvert = Bitmap.FromFile("c:\\tmp\\F1.tif");
sourceToConvert.Save("c:\\tmp\\F1_regen.png", ImageFormat.Png);
if (!CompareFileBytes("c:\\tmp\\F1_gen.png", "c:\\tmp\\F1_regen.png"))
MessageBox.Show("Diff" + i);
}
これにより、Windows 64 では反復 8、32、33、73、114、155、196 で「Diff」が表示されますが、32 ビット マシンではエラーは表示されません。(私は x86 ターゲットを使用します。x64 ターゲットでは、さらに悪化します: 反復 12、13、14、15 での差分...)
Save() から再現可能な結果を得る方法はありますか?
サンプル画像は、このFTP サイトにあります。