Android Hinzufügen von Bild zu Bild mit der Kamera aufgenommen

8

Ich habe an einer Kamera-App gearbeitet und alles arbeitet daran, das Bild aufzunehmen und zu speichern. Aber ich möchte die Imageview, die ich zeige, wenn das Bild in das Bild aufgenommen wird, wenn es aufgenommen wird. Ist das möglich?

Im Moment habe ich versucht, die imageView im selben Layout zu haben, in dem ich die Kameravorschau zeichne.

%Vor%

Ich dachte, dass es, wenn es auf der gleichen Ansicht wie die Kamera gezeichnet wäre, es auch zusammen mit dem Bild sehen würde.

Weiß jemand, ob das möglich ist oder muss ich einen anderen Ansatz wählen? In diesem Fall wären Links zu anderen Lösungen wünschenswert:)

Danke!

Bearbeiten: Ich habe dieses Kamera-Tutorial Ссылка verfolgt Wenn jemand sich fragt, wie ich das Bild usw. speichern kann

Edit2: Zur Klarstellung möchte ich, dass der Stern in diesem Beispiel im aufgenommenen Bild angezeigt wird, nachdem Sie ihn genommen haben. Wenn ich also ein Bild von einer Wand mache, möchte ich, dass der Stern an dieser Wand gezeigt wird, wenn man sich das Bild in der Galerie anschaut, genauso wie es beim Fotografieren ist!

    
Morti 09.09.2014, 11:20
quelle

3 Antworten

5

Was Sie genau wollen, ist ein LayerDrawable -

  

Ein Drawable, der ein Array anderer Drawables verwaltet. Diese werden in Array-Reihenfolge gezeichnet, so dass das Element mit dem größten Index oben angezeigt wird.

Sie haben zwei Möglichkeiten, LayerDrawable zu verwenden. Sie können es entweder in einem separaten Zeichen-XML definieren und dann einfach das Bild in Ihrem ImageView festlegen, oder Sie können ein LayerDrawable dynamisch in Ihrem Code konfigurieren. Da dies jedoch dynamisch erfolgen soll, benötigen Sie den unten angegebenen programmatischen Ansatz.

Programmgesteuert mit Code

Sie müssen Ihre Bitmap (die Sie nach dem Erfassen eines Bildes erhalten haben müssen) in eine Drawable umwandeln. Dafür verwenden Sie BitmapDrawable wie folgt:

%Vor%

Jetzt haben Sie Ihre ImageView mit zwei Bildern (1.ihr aufgenommenes Bild und 2.star_big_on) darauf gesetzt.

Bearbeiten

Da das neu erstellte Bild (mit 2 hinzugefügten Bildern) in der Galerie gespeichert werden soll, würden Sie so etwas tun, um Ihr Bild zu speichern:

%Vor%

Wenn Sie nun wie oben beschrieben vorgehen, wird Ihr Bild am Ende der Galerie hinzugefügt. Wenn Sie möchten, dass es am Anfang der Galerie gespeichert wird, diesen Code beziehen .

Und wenn Sie möchten, dass das ursprüngliche Bild, das in der Galerie gespeichert wurde, nachdem Sie auf ein Foto geklickt haben, aus der Galerie gelöscht wird, können Sie beziehen Sie sich auf diese SO Frage .In dieser Frage werden Sie etwas wie file.getPath() sehen, was nichts anderes als der Pfad des zu löschenden Bildes ist .So, wenn Sie den Pfad des aufgenommenen Bildes erhalten möchten, Beziehe diese SO Frage . Jetzt hast du hoffentlich jede Idee mit dir zu erreichen, was du genau willst.

Hinweis: Wenn Sie wissen möchten, wie Sie LayerDrawable via XML verwenden

Verwenden von XML

Erstellen Sie eine neue Drawable XML-Datei, nennen wir sie mylayer.xml:

%Vor%

Setzen Sie nun in Ihrem Activity das Bild mit dem Drawable :

%Vor%     
Sash_KP 09.09.2014, 12:32
quelle
0

Ich würde es so machen. Funktioniert für mich:

%Vor%

Vergessen Sie nicht, die ImageView auch in der onCreate-Methode wie folgt zu deklarieren:

%Vor%

Das XML würde dem ähnlich sein:

%Vor%

Hoffe das hilft:)

    
dev.mi 09.09.2014 12:45
quelle
0

Maybe Overlay-Ansatz kann Ihnen helfen. Nachdem Sie Ihr Bild aufgenommen haben, konvertieren Sie es in eine Bitmap und senden Sie dann Ihr aufgenommenes Bild und das Bild, das Sie speichern möchten, an diese Methode:

%Vor%

Hoffe, dein Problem zu lösen.

    
Ibrahim AbdelGawad 09.09.2014 13:23
quelle

Tags und Links