2013-03-10 18 views
22

Hallo ich habe eine Zeichenfolge im Base64-Format. Ich möchte es als Bitmap konvertieren und dann in einem ImageView anzeigen. Dies ist der Code:Android Bitmap zu Imageview setzen

ImageView user_image; 
Person person_object; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.user_profile_screen); 

    // ImageViews 
    user_image = (ImageView) findViewById(R.id.userImageProfile); 

    Bundle data = getIntent().getExtras(); 
    person_object = data.getParcelable("person_object"); 
    // getPhoto() function returns a Base64 String 
    byte[] decodedString = Base64.decode(person_object.getPhoto(), Base64.DEFAULT); 

    Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 
    user_image.setImageBitmap(decodedByte); 
    } 

Dieser Code erhalten die Base64 String erfolgreich und ich bekomme keinen Fehler. Aber es zeigt das Bild nicht an. Was kann das Problem sein? Dank

+0

Bitte versuchen Sie diese Zeile hinzuzufügen: user_image.setScaleType (ScaleType.FIT_XY); – KEYSAN

+0

Funktioniert es mit Ressourcenbildern? Wenn Sie zum Beispiel 'iuser_image.setImageResource (android.R.drawable.ic_delete)' schreiben, wird dann irgendetwas angezeigt? – vorrtex

Antwort

29

Bitte versuchen Sie dies:

byte[] decodedString = Base64.decode(person_object.getPhoto(),Base64.NO_WRAP); 
InputStream inputStream = new ByteArrayInputStream(decodedString); 
Bitmap bitmap = BitmapFactory.decodeStream(inputStream); 
user_image.setImageBitmap(bitmap); 
+1

Danke für die Antwort. Aber es hat nicht funktioniert. Ich glaube, ich konvertiere korrekt in Bitmap. Nachdem ich das Bitmap auf die Ansicht eingestellt habe, muss es erneut gezeichnet werden, damit es auf dem Bildschirm angezeigt wird? – kgnkbyl

+0

Konnten Sie das Bild sehen? – Anjula

6

Es gibt eine Bibliothek Picasso benannt ist, die effizient Bilder von einer URL laden. Es kann auch ein Bild aus einer Datei laden.

Beispiele:

  1. Last URL in Image ohne eine Bitmap zu erzeugen:

    Picasso.with(context) // Context 
         .load("http://abc.imgur.com/gxsg.png") // URL or file 
         .into(imageView); // An ImageView object to show the loaded image 
    
  2. Last URL in Image durch eine Bitmap zu erzeugen:

    Picasso.with(this) 
         .load(artistImageUrl) 
         .into(new Target() { 
          @Override 
          public void onBitmapLoaded(final Bitmap bitmap, Picasso.LoadedFrom from) { 
           /* Save the bitmap or do something with it here */ 
    
           // Set it in the ImageView 
           theView.setImageBitmap(bitmap) 
          } 
    
          @Override 
          public void onBitmapFailed(Drawable errorDrawable) { 
    
          } 
    
          @Override 
          public void onPrepareLoad(Drawable placeHolderDrawable) { 
    
          } 
         }); 
    

Es sind viel mehr opt Ionen verfügbar in Picasso. Here is the documentation.