Autore Topic: AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service  (Letto 2450 volte)

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
Salve ragazzi, ho un piccolo problemino :'( Grazie ad un web service da me sviluppato, riesco a caricarmi un array di byte  che rappresenta un immagine di profilo. Sul qualche forumo ho visto il seguente codice per poter trasformare questo array in un ImageView:

Codice (Java): [Seleziona]
byte[] bb = utente.getAvatar();
ByteArrayInputStream b = new ByteArrayInputStream(bb);
bitmap = BitmapFactory.decodeByteArray(bb, 0, bb.length);
ImageView avatarImageView = (ImageView)findViewById(R.id.imageProfilo);
avatarImageView.setImageBitmap(bitmap);

ora non riescoa capire perchè non riesco a visualizzare niente e soprattutt perchè  BitmapFactory.decodeByteArray(bb, 0, bb.length); mi ritorna sempre null??
Ho visto che molti hanno questo problema, ma non ho capito ancora la soluzione. Vi ringrazio per la disponibilità.
A presto
Andrea
« Ultima modifica: 20 Luglio 2011, 17:11:56 CEST da 7h38ugg3r, Reason: inseriti tag code »

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #1 il: 20 Luglio 2011, 17:11:34 CEST »
0
il codice mettilo sempre tra gli appositi tag.

utente.getAvatar() restituisce un effettivo byte[]?
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #2 il: 20 Luglio 2011, 17:23:42 CEST »
0
Ops.. scusami!!
si...quel metodo l'ho fatto io e ritorna una byte[], praticamente lo prende dal database...
Grazie

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #3 il: 20 Luglio 2011, 17:26:22 CEST »
0
^_^
non mi sono spiegato bene: hai controllato che quel byte[] contenga dei valori validi?

sul db hai immagini compresse, quindi quei byte[] non rappresentano i byte dell'immagine, ma della stessa compressa?
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #4 il: 20 Luglio 2011, 17:35:40 CEST »
0
Allora quel metodo ritorna dei valori validi. E' lo stesso metodo che utilizzo nella mia app web per caricare gli avatar (poi è il mio framework che prende l'array e la trasforma in immagine tramite un tag)...ho centrato la risposta??

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #5 il: 20 Luglio 2011, 17:54:14 CEST »
0
nel db hai immagini compresse?
quel metodo prende i dati così come sono e li mette su byte[]?
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #6 il: 20 Luglio 2011, 18:02:59 CEST »
0
Nono niente compressione...prende i byte così come sono

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #7 il: 20 Luglio 2011, 18:10:02 CEST »
0
MmMmm mi sa che qualcosa succede...perchè se utilizo un tag jsf per caricare l'immagine mi da errore (uso un tag del framework per caricarla) che nn può convertirla in string...

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #8 il: 20 Luglio 2011, 22:06:17 CEST »
0
nessuno ha una soluzione??

Offline teskio

  • Moderatore globale
  • Utente normale
  • *****
  • Post: 387
  • Respect: +118
    • Github
    • Google+
    • Mostra profilo
    • Skullab
  • Dispositivo Android:
    Cubot GT99 / SurfTab Ventos 10.1
  • Play Store ID:
    Skullab Software
  • Sistema operativo:
    windows 7 / ubuntu 12.04
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #9 il: 21 Luglio 2011, 02:16:45 CEST »
0
Il codice che hai postato ha un non so chè di anomalo... :-P
Perchè mai instanziare un oggetto ByteArrayInputStream, se poi non lo si usa ??!

Partendo dal presupposto che tu abbia un array di bytes valido, come chiedeva 7h38ugg3r,potresti provare :

Codice (Java): [Seleziona]
byte[] bb = utente.getAvatar();
ByteArrayInputStream b = new ByteArrayInputStream(bb);
byte[] batman = new byte[b.available()]; // non mi veniva un nome decente per questa variabile, accontentatevi di batman :)
b.read(batman);
bitmap = BitmapFactory.decodeByteArray(batman, 0, batman.length);
ImageView avatarImageView = (ImageView)findViewById(R.id.imageProfilo);
avatarImageView.setImageBitmap(bitmap);

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #10 il: 21 Luglio 2011, 09:05:45 CEST »
0
Sisi è vero scusami, ho dimenticato di levare quella riga di codice...
Cmq neanke così funziona  :'( Ho provato a prelevare l'array di byte (foto) dal database per poi scriverlo nel file system attraverso FileOutputStream per vedere se è un array valido e tutto sembra andare bene!!Ora non capisco perchè in android non riesco a visualizzare niente...bah!!
Suggerimenti??Grazie

In ogni caso inserisco il mio codice:

Codice (Java): [Seleziona]
@Override
        protected void onCreate(Bundle savedInstanceState) {
                // TODO Auto-generated method stub
                super.onCreate(savedInstanceState);
                setContentView(R.layout.welcome);
                TextView textWelcome = (TextView)findViewById(R.id.textWelcome);
                AtletaWrapper atleta = (AtletaWrapper) getIntent().getSerializableExtra("atleta");
                textWelcome.setText("Ciao "+ atleta.getNome() );
               
                Bitmap bitmap=null;
                try {
                        byte[] bb = atleta.getAvatar();                
                        ByteArrayInputStream b = new ByteArrayInputStream(bb);
                        byte[] batman = new byte[b.available()];
                        b.read(batman);
                        bitmap = BitmapFactory.decodeByteArray(batman, 0, batman.length);
                } catch (Exception e) {
                        Log.w("Parse Avatar", e.getLocalizedMessage());
                }
       
                ImageView avatarImageView = (ImageView)findViewById(R.id.imageProfilo);
                avatarImageView.setImageBitmap(bitmap);
         }
« Ultima modifica: 21 Luglio 2011, 09:08:49 CEST da mailojah »

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #11 il: 21 Luglio 2011, 09:26:13 CEST »
0
atleta, prima e dopo il passaggio con il bundle, è uguale?
cioè: è rappresentato dalla stessa sequenza di byte?
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #12 il: 21 Luglio 2011, 09:34:28 CEST »
0
come posso vedere se è uguale??Con un semplice equals oppure per ogni indice dell'array??
Ti ricordo che atleta lo ottengo tramite un web service attraverso il login dell'app android...

Cmq bitmap = BitmapFactory.decodeByteArray(batman, 0, batman.length); ritorna sempre null!!!
« Ultima modifica: 21 Luglio 2011, 09:44:06 CEST da mailojah »

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #13 il: 21 Luglio 2011, 09:47:48 CEST »
0
mi spiego meglio:
in questa activity atleta lo prendi da un bundle dell'intent, quindi prima che lo passi a questa activity ha un determinato valore che avrai preso da qualche parte; posso immaginare che sia una stringa, quindi potresti stamparti l'hashcode.
Una volta che arrivi nell'activity e lo prendi dal bundle, potrai anche quì stamparti un hashcode della stringa, e potrai controllare se effettivamente è la stessa.
Spero di avere chiarito cosa intendevo dire prima.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline mailojah

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
Re:AIUTO! Visualizzazione immagine caricata tramite chiamata ad un Web Service
« Risposta #14 il: 21 Luglio 2011, 09:54:56 CEST »
0
Nella mia MainActivity ho questo metodo

Codice (Java): [Seleziona]
public void effettuaLogin(String username, String password) {
                Log.i(MainActivity.class.getName(), "Richiesta di accesso da App Android");
                AtletaWrapper atleta = WebServiceUtil.login(username, password);
                if(atleta!=null){
                        Toast.makeText(MainActivity.this, "Benvenuto!!", Toast.LENGTH_LONG).show();
                        Intent action = new Intent(getApplicationContext(), WelcomeActivity.class);
                        action.putExtra("atleta", atleta);
                        startActivity(action);
                }else {
                        Toast.makeText(MainActivity.this, "Username e Password non corretta!!", Toast.LENGTH_LONG).show();
                }
        }

qui è dove chiamo il WebService >> AtletaWrapper atleta = WebServiceUtil.login(username, password);
e in atleta ho la variabile avatar che è un byte[], quindi il mio web service me lo passa direttamente così..
Quindi come dici tu, qui mi stampo l'hashcode e poi nell'altra activity (WelcomeActivity) mi stampo l'hashcode del byte preso dall'intent

Codice (Java): [Seleziona]
AtletaWrapper atleta = (AtletaWrapper) getIntent().getSerializableExtra("atleta");
giusto??Scusami, ma sono nuovo a queste cose!Ti ringrazio ancora!