In Android habe ich festgestellt, dass wenn ich ein Bild mit der Kamera mache und es einem ImageView zugebe, auf einigen Kameras (wie meinem Handy) um 90 Grad gedreht ist (während auf den Emulator-Telefonen, die ich benutze, t gedreht).Richtiger Weg, um Android-Bilder zu drehen?
Ich versuchte dies:
//once you have the main bitmap
ExifInterface ei = null;
try {
ei = new ExifInterface(imageFilepath);
int orientation = ei.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED);
bitmap = getRotatedBitmap(bitmap, orientation);
}
catch (IOException e) {
e.printStackTrace();
}
Jetzt den Dreh Code:
public static Bitmap getRotatedBitmap(Bitmap bitmap, int orientation) {
Matrix matrix = new Matrix();
switch (orientation) {
case ExifInterface.ORIENTATION_NORMAL:
return bitmap;
case ExifInterface.ORIENTATION_FLIP_HORIZONTAL:
matrix.setScale(-1, 1);
break;
case ExifInterface.ORIENTATION_ROTATE_180:
matrix.setRotate(180);
break;
case ExifInterface.ORIENTATION_FLIP_VERTICAL:
matrix.setRotate(180);
matrix.postScale(-1, 1);
break;
case ExifInterface.ORIENTATION_TRANSPOSE:
matrix.setRotate(90);
matrix.postScale(-1, 1);
break;
case ExifInterface.ORIENTATION_ROTATE_90:
matrix.setRotate(90);
break;
case ExifInterface.ORIENTATION_TRANSVERSE:
matrix.setRotate(-90);
matrix.postScale(-1, 1);
break;
case ExifInterface.ORIENTATION_ROTATE_270:
matrix.setRotate(-90);
break;
default:
return bitmap;
}
try {
Bitmap bmRotated = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
bitmap.recycle();
return bmRotated;
}
catch (OutOfMemoryError e) {
return bitmap;
}
}
dies richtig ist? Oder ist es schrecklich ineffizient? Gibt es dafür einen klügeren Weg? Wenn ich den Rotationscode auf eine Bitmap anwende und sie dann wieder im Speicher abspeichere, wird sie jetzt "falsch gedreht" oder muss ich sie zurückdrehen? Ich weiß nicht, was die akzeptierte Praxis für all das ist.
Überprüfen Sie diesen Link, http://StackOverflow.com/Questions/14066038/Why-does-Animage-Captured-using-Camera-Intent-Get-Rotated-on-Some-Devices-on-A- – Shekhar
@ Shekhar Es scheint so, als würde es mehr oder weniger dasselbe machen wie ich. – user7461935
Ich denke, in Samsung Device wird das Bild gedreht, oder? – Shekhar