Sto testando la decompressione JPEG su un gruppo di computer con diverse versioni di Windows. Tutti questi computer hanno installato .NET 4 e sto eseguendo la compilazione su .NET 2 e sul target della piattaforma "Any CPU". Il codice seguente produce output diversi su sistemi diversi.Decompressione JPEG incoerente attraverso architetture Windows
Bitmap bmp = (Bitmap)Image.FromFile("test.jpg");
long datasum = 0;
for (int y = 0; y < bmp.Height; y++)
for (int x = 0; x < bmp.Width; x++)
datasum = datasum + bmp.GetPixel(x, y).R + bmp.GetPixel(x, y).G + bmp.GetPixel(x, y).B;
Console.WriteLine(datasum);
Tutte le macchine Win7 a 64 bit e WinXP a 32 bit producono un risultato. E tutte le macchine Win7 a 32 bit producono un altro risultato.
Qualche idea sul perché l'output sarebbe diverso?
Quanto diverso? JPEG è una compressione con perdita di dati. Durante la ricostruzione è possibile che si verifichino differenze a virgola mobile durante l'inverse-dct, la trasformazione del colore o la dequantizzazione. – jcopenha
Ho usato un'immagine 512x512 con molto nero e sto ottenendo 5590758 e 5591908 per i risultati. Mentre la differenza è piccola non capisco perché XP dovrebbe corrispondere a Win7-64 ma non a Win7-32. Forse c'è un documento o un sito che spiega tale comportamento? – Jono
Sei davvero così curioso di decompressione jpeg? O c'è un problema più grande al lavoro qui? –