- Forum-Beiträge: 5
13.04.2016, 11:27:16 via Website
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