Imagens JPEG têm diferentes valores de pixel em vários dispositivos

Eu havia notado que, ao ler em uma fotografia idêntica em dispositivos no formato JPEG, os valores de pixel não coincidem. Eles são próximos, mas diferentes. Quando convertidos em arquivos PNG, os valores de pixel parecem corresponder.

Parece que isso se deve aos algoritmos de (des) compactação entre dispositivos. É isso que vem à mente de qualquer maneira. Existe uma maneira de ler arquivos JPEG para que os mesmos pixels sejam recuperados da fotografia nos dispositivos? Não vejo uma opção no componente Opções de BitmapFactory.

Atualmente, aplique o seguinte para manter o tamanho ao trabalhar com valores de pixel de uma imagem entre dispositivos:

Options options = new Options();
options.inScaled = false;
options.inPreferQualityOverSpeed = true;

Atualmente, comparamos os pixels com os seguintes apenas para observar alguns (correspondências fechadas, mas não iguais):

int[] pixels = new int[bitmapF.getWidth() * bitmapF.getHeight()];
bitmapF.getPixels(pixels, 0, bitmapF.getWidth(), 0, 0, bitmapF.getWidth(), bitmapF.getHeight());
Log.d("pixel entries", "pixels = " + pixels[233] + " - " + pixels[4002] + " - " + pixels[11391]);

Nota: Se estiver lendo em uma versão PNG do mesmo arquivo que não está compactado, os valores são idênticos ao esperado.

O Samsung Galaxy S4, por exemplo, e o Samsung Galaxy S5 têm até pixels diferentes do mesmo JPEG (executando a mesma atividade de teste) armazenados na pasta de ativos.

o pixel [233], por exemplo, seria -5205635 no s5, mas -5336451 no s4. O pixel [4002] também está um pouco fora. Mas o pixel [11391] é igual nos dois dispositivos nesta imagem JPEG.

questionAnswers(6)

yourAnswerToTheQuestion