Ich versuche, die Bytes von Android 192x192
ic_launcher.png (die mipmap-xxxhdpi
Version) zu lesen. HierWarum unterscheiden sich meine PNG-Bytes?
ist, was ich tue:
Drawable drawable = ResourcesCompat.getDrawableForDensity
(getResources(), R.mipmap.ic_launcher, 640, getTheme());
Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] pngBytes = stream.toByteArray();
Log.d("TEST", "" + pngBytes[37]);
Ich vergleiche die Ergebnisse mit einem Hex-Editor auf die Datei app\src\main\res\mipmap-xxxhdpi\ic_launcher.png
.
Aus irgendeinem Grund ist das Byte bei pngBytes[37]
anders als das tatsächliche Byte. Die vorhergehenden Bytes sind identisch.
Was kann so etwas verursachen?
Dank. Wie kann ich die tatsächlichen Bytes erhalten? –
@UFCInsider: Verschieben Sie das PNG in 'res/raw /' und verwenden Sie 'openRawResource()' auf einem 'Resources' Objekt. Oder verschieben Sie das PNG in 'assets /' und verwenden Sie 'open()' auf einem 'AssetManager'. Beides wird Ihnen einen 'InputStream' für die rohe Ressource oder den Inhalt geben, und diese Dateien sollten nicht als Teil des Build-Prozesses modifiziert werden. – CommonsWare
Gibt es eine Möglichkeit, die tatsächlichen Bytes programmgesteuert zu erhalten? Ich möchte das PNG –