Ich verwende diesen Code, um ein Bild in der Bildansicht zu speichern, aber das Bild wird gestreckt, wenn ich in der Bildansicht dsave. Die Vorschau der Kamera ist perfekt und klicken Sie auf das rechte Bild, aber wenn ich dieses Bild in der Bildansicht einstelle, wird das Bild eingefügt.
%Vor%UIImageView-Einstellungen
%Vor%Meine Testanwendung für dieses Problem
Um das Bild von der Kamera zu erhalten, verwende ich die folgenden Methoden:
%Vor% Zum Abrufen des Ergebnisses von der Kamera oder Bildauswahl und Anzeigen in der Bildansicht. Hier this.myInterfaceImage
:
So habe ich das in meiner Testanwendung verwendet, und es funktioniert. Ich habe keine Orientierungsprobleme. Ich habe im Portrait-Modus mit Portrait und Landscape Picture und im Landscape-Modus mit Portrait und Landscape Picture getestet. Und bei beiden habe ich die Orientierung nach dem Abrufen des Bildes geändert.
Wenn Sie die benutzerdefinierte Kamera verwenden und die Ausrichtung mit dem obigen Code falsch ist, fügen Sie einfach
hinzuEs werden zwei Dinge benötigt:
Die Vorschau der Kamera muss mit der Rotation identisch sein. Stellen Sie dies mit
ein camera.setDisplayOrientation(result);
Speichern Sie das aufgenommene Bild als Kameravorschau. Tun Sie dies über Camera.Parameters.
int mRotation = getCameraDisplayOrientation();
Camera.Parameters parameters = camera.getParameters();
parameters.setRotation(mRotation); //set rotation to save the picture
camera.setDisplayOrientation(result); //set the rotation for preview camera
camera.setParameters(parameters);
Dann können Sie Ihre Funktion ohne die Orientierung verwenden
%Vor%Ich hoffe, das hilft.
Damit verhindern Sie, dass das Bild gestreckt wird und das Bildseitenverhältnis beibehalten wird
%Vor%Sie können scaleType in XML einstellen
%Vor%In Java-Code können Sie dasselbe wie folgt erreichen
%Vor% Wenn Sie Ihre Bitmap mit Bitmap.createScaledBitmap(bm, screenHeight, screenWidth, true);
skalieren, wird das Seitenverhältnis nicht beibehalten, da dadurch die Breite und Höhe der Bitmap an das Ziel angepasst wird.
Eine Option wäre, die Zielhöhe manuell zu berechnen, damit kein Zuschneiden erfolgt:
%Vor% Und dann targetHeight
anstelle von screenHeight
als height Argument in createScaledBitmap ().
Stellen Sie außerdem sicher, dass die Bildansicht, in die Sie Ihre Bitmap laden, über den entsprechenden Maßstabstyp verfügt (z. B. FIT_CENTER oder CENTER_CROP).
Tags und Links android android-camera android-imageview