Erzeugtes Bild drehen ohne Bitmap.compress()

  • Antworten:2
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 5

13.04.2016, 11:27:16 via Website

Hallo zusammen!

Ich hätte da mal eine Frage zur Bildrotation, wo ich aktuell sehr dran zu knabbern habe.

Szenario:
Ich habe eine Kamera-App erstellt (Camera-Preview im Framelayout).
Als ich angefangen habe, war bei der Preview die Kamera im Portrait-Modus bereits in der falschen Rotation.
Das habe ich mit einer setCameraDisplayOrientation Methode in der Preview Activity jedoch gut behoben bekommen.

Wenn ich jetzt aber ein Foto im Portrait-Modus mache, wird das Bild wieder in der falschen Rotation abgespeichert.
Hier habe ich auch mit einer Methode, die beim PictureCallback aufgerufen wird, abhelfen können... :

 private byte[] setRotation(byte[] data) {
    //Bild in der Rotation korrigieren
    int screenWidth = getResources().getDisplayMetrics().widthPixels;
    int screenHeight = getResources().getDisplayMetrics().heightPixels;
    Bitmap bm = BitmapFactory.decodeByteArray(data, 0, (data != null) ? data.length : 0);
    ByteArrayOutputStream stream = new ByteArrayOutputStream();

    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
        Bitmap scaled = Bitmap.createScaledBitmap(bm, screenHeight, screenWidth, true);
        int w = scaled.getWidth();
        int h = scaled.getHeight();
        Matrix mtx = new Matrix();
        mtx.postRotate(90);
        bm = Bitmap.createBitmap(scaled, 0, 0, w, h, mtx, true);
    }else{// LANDSCAPE MODE
        return data;
    }

    bm.compress(Bitmap.CompressFormat.JPEG, 100, stream);

    return stream.toByteArray();
}

Das Bild ist zwar jetzt in der richtigen Rotation, jedoch ist die Qualität unterirdisch. Habe schon alle Variationen in der .compress Methode ausprobiert,... die Bilder schrumpfen von ca. 2Mb auf 600Kb.
Gibt es irgendeine andere Möglichkeit, das Bild in die richtige Richtung zu bekommen?

Hoffe man versteht mein Problem :)

LG
Sascha

Antworten
Klaus
  • Blogger
  • Forum-Beiträge: 19.167

14.04.2016, 16:06:46 via App

Hallo Sascha!

Bitte nicht pushen, gib doch der Community ein wenig Zeit!

Wenn sich jemand findet, der eine Antwort zu deiner Frage weiß, dann wird er/sie es bestimmt hier posten, also hab noch ein wenig Geduld... :?

| LG Klaus |
| Google Nexus 6P - Dirty Unicorns | Google Nexus 6 - Dirty Unicorns |
| Das AndroidPITiden-Buch | Die Androiden-Toolbox | AndroidPIT-Regeln |

Sascha

Antworten

Empfohlene Artikel