- Forum-Beiträge: 245
12.05.2015, 09:33:31 via Website
12.05.2015 09:33:31 via Website
Hallo Leute,
ich habe das Problem, dass ich es einfach nicht schaffe die Bild orientation anhand des Pfades herraus zu finden.
Der Ausgangspunkt ist vollgender.
Ich habe einen Image Chooser, dieser bietet die Möglichkeit Bilder direkt mit der Kamera zu machen, sowie Bilder aus den Dokumenten zu holen.
Wenn ich die Bilder mit der Kamera mache, dan bekomme ich mit dem unten stehenden Quellcode die Orientation und kann anhand dessen das Bild richtig rotieren.
Wenn ich ein Bild aus den Dokumenten wähle, dann ist die orientation immer 0, somit habe ich falsch rotierte Bilder in meiner Image View.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == IMAGE_CHOOSER) {
final boolean isCamera;
if (data == null) {
isCamera = true;
} else {
final String action = data.getAction();
if (action == null) {
isCamera = false;
} else {
isCamera = action.equals(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
}
}
Uri selectedImageUri;
if (isCamera) {
selectedImageUri = outputFileUri;
} else {
selectedImageUri = data == null ? null : data.getData(); //Get Uri
}
try {
Bitmap bitmap = decodeUri(selectedImageUri); //Create Bitmap
//--------Get orientation---------Works only with camera not with document choosen files
//If Picure is choosen from documents orientation is always 0
String[] orientationColumn = {MediaStore.Images.Media.ORIENTATION};
Cursor cur = managedQuery(selectedImageUri, orientationColumn, null, null, null);
int orientation = -1;
if (cur != null && cur.moveToFirst()) {
orientation = cur.getInt(cur.getColumnIndex(orientationColumn[0]));
}
//------------------------------------------------------------------------
//Bitmap rotation with orientation
bitmap = RotateBitmap(bitmap, orientation);
//-----------------Custom code for calculating image height and width
Integer h = bitmap.getHeight();
Integer w = bitmap.getWidth();
Double factor = (double)convertDpToPixel(200, mContext)/(double)h;
w = (int)(factor * w);
//-----------------------------------------------------------------
//Create new Bitmap
Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, w, (int)convertDpToPixel(200, mContext), false);
//..... ScaledBitmap in eine ImageView setzen
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Ich hoffe ihr könnt mir da weiter helfen, verzweifle so langsam an dem Ding^^.
Grüße
Dima
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.