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!
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:
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
:
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.
Tags und Links android camera android-camera