plusone

3. September 2011

Grafiken für das Speichern und/oder Übertragen vorbereiten

Guten Mittag,


ich stand eins vor dem Problem, wie speichere ich ein Object in Datenbank und wie krieg ich dieses Object zum Server übertragen?

Jetzt zeig ich euch wie ich bewerkstelligt habe, das mein Bild gespeichert und auch zu einem dorNet Server übertragen werden konnte.

Die gängigsten Möglichkein unter Android mit Grafiken umzugehen sind Bitmap- und Drawable-Objekte.

Wenn man den Unterschied zwischen Bitmap und Drawable betrachtet, besteht ein Drawable aus einem Bitmap mit einem Gerüst.
Aber wie kann ich das eine zum anderen umwandeln?

Bitmap zum Drawable:
Bitmap bitmap; // Ersetzt das mit euer eigenem Bitmap!
BitmapDrawabledrawable = new BitmapDrawable(bitmap);

Drawable zum Bitmap:
bitmap = drawable.getBitmap();
//wenn ihr ein Drawable in euren Ressourcen habt, dann:
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
//R.drawable.icon durch die ID eures Drawable ersetzten.

Da wir jetzt festgestellt haben, wie einfach das war. Kommen wir zur Vorbereitung zum Übertragen bzw. Speichern.

Das wichtige dabei ist, ihr müsst euch klar werden, wie Daten übertragen bzw. gehandhabt werden.
Und das ist in Bytes! (Jaja, Bits sind es eig. wenn man weit genug geht.)
Also müssen wir aus unseren Javaobjekten Bytes schafen. Ein Byte reicht wohl nicht aus, also werden wir mit Bytearrays arbeiten.
Und da ist auch schon das Stichwort gefallen! Bytearrays.

Aber wie erstell ich aus einem Bild ein Bytearray?
Dazu benutzen wir die Klasse ByteArrayOutputStream und die compress-Methode von unserem Bitmapobject.

Bitmap bitmap; // Vorhandene Bitmap verwenden!
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.JPEG, 100, stream);

final byte[] value = stream.toByteArray();
CompressFormat gibt das Format des Bildes an und der zweite Parameter ist die Qualität in Prozent.

Also was haben wir gerade gemacht? Wir haben unsere Daten in den Stream gestopft und anschließend lassen wir uns das als byte[](Bytearray) ausgeben.
Das wars! Nur paar Zeilen und wir haben aus unserem Bitmap/Drawable ein byte[] erschaffen.
Ob ihr jetzt ein Socket, ServerSocket, BluetoothSocket, BluetothServerSocket, Webservice oder einfach eure SQLiteDatabase nutzt, bleibt euch überlassen.

Vorbereitung verstanden? Schön :)

Viel Erfolg!

regards
Alexander

Keine Kommentare:

Kommentar veröffentlichen