Autore Topic: BitmapFactory e Base64 decode  (Letto 775 volte)

Offline Lomba1986

  • Utente normale
  • ***
  • Post: 173
  • Respect: +1
    • Mostra profilo
BitmapFactory e Base64 decode
« il: 30 Maggio 2012, 15:37:11 CEST »
0
Rieccomi qui a proporvi i miei amletici dubbi...
Come state?

Allora ho un piccolo problema con l'invio di un file bitmap.
Io eseguo l'invio tramite protocollo TCP e sembra funzionare... spedisco una stringa (penso che sia codifica in base64...è un array di variabili senza segno dove ogni elemento è rappresentato da 8 bit...quindi penso che sia base64 no?)

Spedisco questa stringa...lunga 242581 (penso bit...è il risultato di CString.getLenght...se non sono bit sono byte...ossia il numero di caratteri.) Dal lato client io eseguo il seguente codice

Codice (Java): [Seleziona]
out.write(token+"-GET_IMAGE-"+System.getProperty("line.separator"));
out.flush();
String letta = in.readLine();
byte [] imageByte = Base64.decode(letta,Base64.DEFAULT);
Log.i("Byte",""+imageByte.length);
Bitmap bm = BitmapFactory.decodeByteArray(imageByte, 0, imageByte.length);
immagine.setImageBitmap(bm); //immagine è una ImageView

tuttavia non setta nulla...anzi andando a vedere su logcat vedo la seguente stringa
Codice (Java): [Seleziona]
05-30 13:27:49.030: D/skia(408): --- SkImageDecoder::Factory returned nullQuindi credo che fallisca la costruzione dell'immagine...
Ho notato che stampando la lunghezza della variabile stringa "letta" essa è lungha 242580...

Qualcuno ha qualche idea su come risolvere il problema?

Grazie a tutti
Non esistono problemi, ma solo soluzioni...

Offline eagledeveloper

  • Translate Team
  • Utente senior
  • ****
  • Post: 517
  • Respect: +37
    • Google+
    • 347516210
    • dark_pinz
    • @WandDStudios
    • Mostra profilo
    • W&D Studios
  • Dispositivo Android:
    HTC One X e HTC One
  • Play Store ID:
    W%26D+Studios
  • Sistema operativo:
    Ubuntu / Windows 7
Re:BitmapFactory e Base64 decode
« Risposta #1 il: 30 Maggio 2012, 15:47:15 CEST »
0
Io mi sono creato due metodi per gestire Bitmap e Base64String:

Codice (Java): [Seleziona]
public static String getBase64String(Bitmap bitmap) {
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
        return Base64.encodeToString(stream.toByteArray(), Base64.DEFAULT);
}
       
public static Bitmap getBase64Bitmap(String string) {
        byte[] decodedBase64Array = Base64.decode(string, Base64.DEFAULT);
        return BitmapFactory.decodeByteArray(decodedBase64Array, 0, decodedBase64Array.length);
}

Il tuo problema sembra nella lettura della stringa, qualche dettaglio in piu'?
I numeri contano molto di più del seme.

Offline Lomba1986

  • Utente normale
  • ***
  • Post: 173
  • Respect: +1
    • Mostra profilo
Re:BitmapFactory e Base64 decode
« Risposta #2 il: 01 Giugno 2012, 08:56:47 CEST »
0
Grazie della risposta  :D

Ho controllato bene cosa il server inviava ed effettivamente c'era un errore di codifica per cui la funzione di conversione convertiva qualcosa di sbagliato....ma solo perchè ciò che gli iniviavo era sbagliato già in partenza

Ora che ho rimesso a posto la codifica funzia tutto

Ciaooo :-P
Non esistono problemi, ma solo soluzioni...

Offline Angelus84

  • Utente junior
  • **
  • Post: 59
  • Respect: +1
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Next
  • Play Store ID:
    Angelus
  • Sistema operativo:
    Windows 7
Re:BitmapFactory e Base64 decode
« Risposta #3 il: 19 Giugno 2013, 01:25:51 CEST »
0
Io mi sono creato due metodi per gestire Bitmap e Base64String:

Codice (Java): [Seleziona]
public static String getBase64String(Bitmap bitmap) {
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
        return Base64.encodeToString(stream.toByteArray(), Base64.DEFAULT);
}
       
public static Bitmap getBase64Bitmap(String string) {
        byte[] decodedBase64Array = Base64.decode(string, Base64.DEFAULT);
        return BitmapFactory.decodeByteArray(decodedBase64Array, 0, decodedBase64Array.length);
}

Il tuo problema sembra nella lettura della stringa, qualche dettaglio in piu'?


grazie per i metodi