android Vorder-und Rückseite Kamera aufgenommene Bild Ausrichtung Problem, gedreht in einer falschen Art und Weise
Ich habe eine Kamera-app im portrait-Modus, die Bilder erfolgt von sowohl front-und back-end-Kameras.Die Frage ist, wie die aufgenommenen Bilder gedreht werden, in einer falschen Art und Weise...
Für die Vorschau benutzt habe ich den folgenden code....
Camera.Parameters parameters = camera.getParameters();
android.hardware.Camera.CameraInfo info = new android.hardware.Camera.CameraInfo();
android.hardware.Camera.getCameraInfo(defaultCameraId, info);
int rotation = this.getWindowManager().getDefaultDisplay()
.getRotation();
if (Integer.parseInt(Build.VERSION.SDK) >= 8) {
int degrees = 0;
switch (rotation) {
case Surface.ROTATION_0:
degrees = 0;
break;
case Surface.ROTATION_90:
degrees = 90;
break;
case Surface.ROTATION_180:
degrees = 180;
break;
case Surface.ROTATION_270:
degrees = 270;
break;
}
int result;
if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
result = (info.orientation + degrees) % 360;
result = (360 - result) % 360; //compensate the mirror
} else { //back-facing
result = (info.orientation - degrees + 360) % 360;
}
camera.setDisplayOrientation(result);
} else {
parameters.set("orientation", "portrait");
}
camera.setParameters(parameters);
Aber die aufgenommenen Bilder sind gedreht, in einer falschen Art und Weise.ich habe auch versucht, drehen Sie das aufgenommene Bild mit matrix.postRotate(bitmap)
.Das auch nicht funktioniert bei einigen Geräten wie nexus..ich habe versucht, EXIF auch.Aber hier habe ich die url anstelle von "Dateipfad".Das funktioniert nicht so gut. kann mir jemand helfen ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Finden Sie unter code.
Und siehe auch diesen link https://stackoverflow.com/a/6124375/1441666
Diese können Sie verwenden, um die Orientierung von einem
Uri
Und als Hinweis rotation '3 = 180, 6 = 90, 8 = 270'
Ich bin mit dem folgenden code:
getUriPath:
versuchen, diesen code-snippet
und drehen Sie dann die matrix, die pro Richtung erhalten Sie
die ausgewählte Antwort gibt nur die mögliche rotation, die gespeichert worden ist, die in EXIF-header. in mehreren Fällen-Kamera nicht eingestellt "ExifInterface.TAG_ORIENTATION" - Attribut in EXIFHeader so wird es 0(ExifInterface.ORIENTATION_UNDEFINED). und falls es gesetzt ist, wird es wahr sein, nur in einem Fall/Orientierung, wenn das Bild aufgenommen wird. Sie müssen manuell festlegen Drehung im Kamera-Parameter mit setRotation () - Methode. die Dokumentation der setRotation() ist sehr klar und erklärt auch, wie zu berechnen ist die rotation unter Berücksichtigung der Drehung des Geräts und der Kamera-sensor-Ausrichtung(meist Landschaft).
also check out setRotation () - Methode . das ist, was Sie ändern müssen.