Las imágenes JPEG tienen valores de píxeles diferentes en varios dispositivos
Me di cuenta de que al leer una fotografía idéntica en todos los dispositivos en formato JPEG, los valores de píxeles no coinciden. Son cercanos, pero diferentes. Cuando se convierte a archivos PNG, los valores de píxeles parecen coincidir.
Esto parecería que se debería a los algoritmos de (des) compresión en todos los dispositivos. Eso es lo que viene a la mente de todos modos. ¿Hay alguna manera de leer en archivos JPEG para recuperar los mismos píxeles de la fotografía en todos los dispositivos? No veo una opción dentro del componente Opciones de BitmapFactory.
Actualmente aplica lo siguiente para mantener el tamaño cuando se trabaja en valores de píxeles de una imagen en dispositivos:
Options options = new Options();
options.inScaled = false;
options.inPreferQualityOverSpeed = true;
Actualmente comparamos píxeles con los siguientes solo para ver algunos (coincidencias cercanas, pero no iguales):
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: Si lee en una versión PNG del mismo archivo que no está comprimido, los valores son idénticos a los esperados.
El Samsung Galaxy S4, por ejemplo, y el Samsung Galaxy S5 incluso tienen píxeles diferentes del mismo JPEG (que se ejecuta fuera de la misma actividad de prueba) almacenados en la carpeta de activos.
el píxel [233], por ejemplo, sería -5205635 en s5 pero -5336451 en el s4. El píxel [4002] también está un poco apagado. Pero los píxeles [11391] son iguales en ambos dispositivos en esta imagen JPEG.