2013-03-10 14 views
22

こんにちは私はBase64形式の文字列を持っています。ビットマップを変換してImageViewに表示したいと思います。これはコードですAndroidはビットマップから画像ビューへ

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); 
    } 

このコードはBase64文字列を正常に取得しますが、エラーは発生しません。しかし、画像は表示されません。 何が問題なのですか?効率的にURLから画像を読み込むことができピカソというライブラリがあり

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

plsこの行を追加してみてください:user_image.setScaleType(ScaleType.FIT_XY); – KEYSAN

+0

リソースイメージでは機能しますか?たとえば、 'iuser_image.setImageResource(android.R.drawable.ic_delete)'と書くと、何かが表示されますか? – vorrtex

答えて

29

はこれを試してみてください。ファイルから画像を読み込むこともできます。

例:

  1. ビットマップを生成することなく、ImageViewのにロードURL:ビットマップを生成することにより、ImageViewのに

    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. ロードURL:

    あり
    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) { 
    
          } 
         }); 
    

もっと多くの選択肢がありますピカソで利用可能なイオン。 Here is the documentation

+1

返信いただきありがとうございます。しかし、それは動作しませんでした。私はビットマップに正しく変換すると思います。私はビットマップをビューに設定した後、画面に表示されるように再描画する必要がありますか? – kgnkbyl

+0

その画像を表示できましたか? – Anjula

6

: おかげ