44

こんにちは、Base64 形式の文字列があります。ビットマップに変換して ImageView に表示したい。これはコードです:

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 文字列を正常に取得し、エラーは発生しません。しかし、それは画像を表示しません。何が問題になる可能性がありますか? ありがとう

4

4 に答える 4

58

これを試してください:

byte[] decodedString = Base64.decode(person_object.getPhoto(),Base64.NO_WRAP);
InputStream inputStream  = new ByteArrayInputStream(decodedString);
Bitmap bitmap  = BitmapFactory.decodeStream(inputStream);
user_image.setImageBitmap(bitmap);
于 2013-03-10T15:30:41.327 に答える
6

URL から画像を効率的にロードできるPicassoという名前のライブラリがあります。ファイルから画像をロードすることもできます。

例:

  1. ビットマップを生成せずに 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 を ImageView に読み込みます。

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

Picasso には他にも多くのオプションがあります。ここにドキュメントがあります

于 2016-02-23T11:52:01.150 に答える