wie erstelle ich eine riesige, weiße bitmap mit der Leinwand?
Ich versuche, herauszufinden, wie kann ich Leinwand zu zeichnen, eine kleine Grafik (ist eigentlich egal, was es ist) auf eine große weiße Fläche. Das Problem ist, dass wenn ich den start mit einer großen leere Bitmap, wenn ich eine veränderbare Kopie mit ARGB_8888 Android läuft sofort out of memory. Ich bin gespannt, ob ich etwas fehlt, oder ob es tatsächlich nicht möglich ist-auf-composite-eine kleine Grafik, die auf einer großen weißen Oberfläche, und speichern Sie es als PNG-oder JPG-aufgrund von speicherbeschränkungen in Android.
- wie groß ist "groß"?
- Auch einfachste Optimierung mit den von Ihnen bereitgestellten Informationen, ist nicht zu verwenden, ARGB_8888 und verwenden nur RGB_888 da klingt es wie das image ist eine deckende Farbe. Also, sparen Sie ein byte pro pixel des Bildes. Vielleicht könnten Sie liefern den code, den Sie verwenden, um zu zeichnen das Bild und wir könnten helfen, eine bessere Antwort auf Ihre Frage dann?
- es ist ein matter Lack, aber das ist nicht wirklich meine Frage. Mein Wunsch ist es, einfach einen dump der Inhalt meiner Leinwand eine *neue bitmap -, sondern als re-mit einem vorherigen. Gibt es eine Möglichkeit zu schreiben, die Leinwand in ein byte-array? Oder bin ich dazu verdammt, immer zu beginnen mit einer bereits bestehenden bitmap auf, die zu ziehen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Natürlich sind Sie begrenzt durch den Speicher, wenn Sie wollen, um große bitmaps, aber Sie haben genug Speicher zum erstellen von sehr großen bitmaps. Zum Beispiel, ein 1024*1024 ARGB_8888 bitmap benötigen etwa 4 MB Speicher, das ist nicht ein problem, wenn Ihre app ist sparsam mit Speicher im Allgemeinen. Die normale heap-Größe für eine Android-app ist in der Regel zwischen 16-32 MB je nach Android-version, nur um Ihnen ein Gefühl für das, was Sie haben, um mit zu spielen.
Sie sagen, Sie machen eine Kopie von großen bitmap, und das könnte dein Hauptproblem. Es gibt keine Notwendigkeit, erstellen Sie eine Kopie einer großen bitmap, benötigen Sie nur eine. Hier ist ein Beispiel-Projekt, das schafft eine große (1024*1024) weiß-bitmap und zeichnet ein Blick in Ihre app in die Mitte und schreibt dann das Ergebnis in ein PNG:
Zusammen mit diesem wichtigsten layout:
Erhalten Sie eine bitmap irgendwo wie
/mnt/sdcard/Pictures/big-white-image-with-view.png
etwa wie folgt aussieht: