Android установил растровое изображение в Imageview
Привет, у меня есть строка в формате 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 String, и я не получаю никаких ошибок. Но он не отображает изображение.
В чем проблема?
Благодаря
Ответы
Ответ 1
Пожалуйста, попробуйте следующее:
byte[] decodedString = Base64.decode(person_object.getPhoto(),Base64.NO_WRAP);
InputStream inputStream = new ByteArrayInputStream(decodedString);
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
user_image.setImageBitmap(bitmap);
Ответ 2
Существует библиотека с именем Picasso, которая может эффективно загружать изображения из URL-адреса. Он также может загружать изображение из файла.
Примеры:
-
Загрузите 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
-
Загрузите 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 есть еще много вариантов. Вот документация.