JPEG-Bilder haben unterschiedliche Pixelwerte auf mehreren Geräten
Mir war aufgefallen, dass beim geräteübergreifenden Einlesen eines identischen Fotos im JPEG-Format die Pixelwerte nicht übereinstimmen. Sie sind nah, aber unterschiedlich. Bei der Konvertierung in PNG-Dateien scheinen die Pixelwerte übereinzustimmen.
Dies scheint auf die (Un-) Komprimierungsalgorithmen zwischen den Geräten zurückzuführen zu sein. Das fällt mir sowieso ein. Gibt es eine Möglichkeit, JPEG-Dateien einzulesen, damit die gleichen Pixel geräteübergreifend vom Foto abgerufen werden? In der Komponente BitmapFactory-Optionen wird keine Option angezeigt.
Wenden Sie derzeit Folgendes an, um die Größe bei der Arbeit an Pixelwerten eines Bildes über Geräte hinweg beizubehalten:
Options options = new Options();
options.inScaled = false;
options.inPreferQualityOverSpeed = true;
Derzeit werden Pixel mit den folgenden verglichen, um nur einige zu betrachten (enge Übereinstimmungen, aber nicht gleich):
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]);
Hinweis: Wenn Sie eine PNG-Version derselben unkomprimierten Datei einlesen, sind die Werte erwartungsgemäß identisch.
Das Samsung Galaxy S4 und das Samsung Galaxy S5 haben sogar unterschiedliche Pixel aus demselben JPEG (das von derselben Testaktivität ausgeführt wird), die im Assets-Ordner gespeichert sind.
Pixel [233] wäre zum Beispiel -5205635 auf s5, aber -5336451 auf s4. Das Pixel [4002] ist ebenfalls etwas abwesend. Aber Pixel [11391] sind auf beiden Geräten in diesem JPEG-Bild gleich.