Autore Topic: ImageView caricare bmp da buffer  (Letto 740 volte)

Offline Beppeoioi

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy W
  • Sistema operativo:
    Windows XP
ImageView caricare bmp da buffer
« il: 01 Febbraio 2012, 09:59:23 CET »
0
Ciao a tutti,
provengo dalla programmazione in delphi e da un mesetto mi sto cimentando nella programmazione in android usando l'sdk e eclipse.
Per far pratica sto provando a fare il porting di una piccola applicazione client che ho creato in delphi, ma mi sono bloccato per un piccolo problema derivato probabilmente dall'inesperienza ed avrei bisogno di un piccolo suggerimento.
Ho un applicazione server che gira su windows, alla richiesta del client invia delle stringhe oppure fa uno screenshot di una piccola porzione dello schermo(100px X 100px), la trasforma in bitmap e la invia tramite tcp al client.
Il client in android che ho creato (Android 2.3.3 api 10) riceve perfettamente tramite una connessione tcp il testo inviato e lo visualizza in una Textview ma non reisco a visualizzare l'immagine bitmap in una ImageView.
Potete per favore darmi due dritte su come recuperare correttamente l'immagine bitmap dal buffer del socket e visulizzarla in una ImageView?
Grazie a tutti.
Giuseppe.

Offline Reinhard

  • Utente junior
  • **
  • Post: 85
  • Respect: +16
    • Google+
    • rspisser
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5 Lollipop 5.1
  • Play Store ID:
    rspisser
  • Sistema operativo:
    Windows 7
Re:ImageView caricare bmp da buffer
« Risposta #1 il: 01 Febbraio 2012, 12:00:12 CET »
+1
Ciao,

prova a vedere qui:

[android-developers] Send Bitmap with Socket

qui dicono che basta:
Bitmap sourceBitmap=BitmapFactory.decodeByteArray(img, 0,
img.length);
 
(dove img è il tuo buffer)

una volta ottenuto l'oggetto Bitmap , basta un
image.setImageBitmap(sourceBitmap);

visualizzarla nella ImageView


Offline Beppeoioi

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy W
  • Sistema operativo:
    Windows XP
Re:ImageView caricare bmp da buffer
« Risposta #2 il: 01 Febbraio 2012, 17:48:17 CET »
0
Già provato, non funziona.

per capire vi posto parte del codice:

Premendo un botton invio una stringa al server che mi risponde con l'immagine bitmap
e la recupero in questo modo:
Codice (Java): [Seleziona]
              if (nsocket.isConnected()) {
                        int byteLetti=0;
                        byte[] buff1 = new byte[40058];    (qui non so come settare la dimensione adatta del buffer e quindi assegno una dimensione arbitraria)
                        byteLetti = nsocket.getInputStream().read(buff1, 0, 40058);
                                .....
                                               
                        Bitmap sourceBitmap=BitmapFactory.decodeByteArray(buff1, 0,
                                        buff1.length);
                       
                        immagine.setImageBitmap(sourceBitmap);
(Perdonate le inesattezze ed alcune cose senza senso, sono un principiante e sto facendo delle prove)

la maggior parte delle volte l'imageview mi fa vedere delle immagini astrate ( ed è giusto sicuramente sbaglio qualcosa), ma inviando la richiesta più volte una volta su dieci mi visualizza l'immagine corretta.
Non riesco proprio a capire come mai...
« Ultima modifica: 01 Febbraio 2012, 18:56:00 CET da Verandi »

Offline Verandi

  • Utente normale
  • ***
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:ImageView caricare bmp da buffer
« Risposta #3 il: 01 Febbraio 2012, 18:47:34 CET »
0
Ciao! Potresti provare ad usare il metodo che prende l'inputStream come parametro: BitmapFactory.decodeStream(Inputstream). Questo perché l'array di byte potrebbe essere ricevuto "a pezzi", e quindi la bitmapFactory si ritrova a non decodificare l'array per intero, a meno che non lo ricostruisci partendo dai pezzi che ti vengono inviati. Lo stesso problema si presenta cercando di ricostruire una bitmap da un byte array ricevuto via bluetooth.
« Ultima modifica: 02 Febbraio 2012, 12:09:41 CET da Verandi »

Offline Zappescu

  • Utente junior
  • **
  • Post: 110
  • Respect: +7
    • Mostra profilo
    • Tic Tank Toe
  • Dispositivo Android:
    HTC Magic
  • Play Store ID:
    Zapmobilegames
  • Sistema operativo:
    Win XP
Re:ImageView caricare bmp da buffer
« Risposta #4 il: 02 Febbraio 2012, 11:59:22 CET »
0
Ciao Beppeoioi,
ti suggerisco questo approccio, credo possa funzionare bene nel tuo caso: Android - How do I do a lazy load of images in ListView - Stack Overflow
Zapmobilegames website
Tic Tank Toe: a new approach for a classic game

Offline Beppeoioi

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy W
  • Sistema operativo:
    Windows XP
Re:ImageView caricare bmp da buffer
« Risposta #5 il: 03 Febbraio 2012, 14:09:16 CET »
0
Ciao Beppeoioi,
ti suggerisco questo approccio, credo possa funzionare bene nel tuo caso: Android - How do I do a lazy load of images in ListView - Stack Overflow

Grazie a tutti per le risposte.
Quest'ultima mi sembra un'ottima idea, faccio due prove e poi vi faccio sapere...