Das Bild einer benutzerdefinierten Kamera wird beim Speichern in ImageView gestreckt

8

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%     
Neeraj Sharma 29.02.2016, 07:28
quelle

7 Antworten

5

Verwenden Sie die folgende Klasse zum Erstellen einer skalierten Bitmap

%Vor%

und verwende diese Klasse in deiner Funktion wie folgt

%Vor%     
Ajinkya 07.03.2016, 05:59
quelle
1

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 :

%Vor%

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

hinzu

Es werden zwei Dinge benötigt:

  1. Die Vorschau der Kamera muss mit der Rotation identisch sein. Stellen Sie dies mit

    ein

    camera.setDisplayOrientation(result);

  2. 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.

    
Kordi 02.03.2016 12:36
quelle
0

Damit verhindern Sie, dass das Bild gestreckt wird und das Bildseitenverhältnis beibehalten wird

%Vor%     
Avani Nagar 29.02.2016 11:36
quelle
0

Ich verwende diese Funktion in meinem Projekt, bitte überprüfe, ob es für dich nützlich ist.

%Vor%     
Pitty 03.03.2016 12:59
quelle
0

Sie können scaleType in XML einstellen

%Vor%

In Java-Code können Sie dasselbe wie folgt erreichen

%Vor%     
Muhammad Umair Shafique 07.03.2016 11:19
quelle
0

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 ().

verwenden

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).

    
Mdlc 08.03.2016 19:12
quelle
-1

Verwenden Sie dieses putExtra in Ihrem Intent-Aufruf für die Kamera

%Vor%     
Pitty 03.03.2016 12:53
quelle