Загруженный Bitmap теряет прозрачность при добавлении в ImageView - PullRequest
2 голосов
/ 09 сентября 2011

Я пытаюсь показать потенциально прозрачное изображение из удаленного местоположения, но альфа-канал кажется белым, когда я добавляю его к своему ImageView.

Я загружаю удаленное изображение сследующий код:

public static Bitmap loadBitmap(String url) throws IOException {
   int bufferSize = 1024;
   InputStream in  = new BufferedInputStream(new URL(url).openStream(), bufferSize);
   Bitmap bitmap = BitmapFactory.decodeStream(in);

   try {
      in.close();
   } catch (Exception ignored) {

   }
   return bitmap;
}

В моем Activity с упомянутым ImageView у меня есть следующий код (try-catch опущен):

if (bitmap != null) {
    ImageView imageView = (ImageView) findViewById(R.id.my_image_view);
    imageView.setImageBitmap(bitmap);
}

bitmap.getConfig() возвращает ARGB_8888.

Я программирую на Android 1.6, то есть SDK версии 4.

Мне не хватает какого-то волшебного сеттера?Когда я загружаю точно такую ​​же картинку как Drawable из папки res, она работает нормально.

Я заметил сеттер, называемый setHasAlpha на Bitmap, но это с SDK 12-го уровня.

РЕДАКТИРОВАТЬ: я пытался получить цвет некоторых из пикселей, которые я знаю, прозрачные, и их цвет == 0, который является прозрачным.

Ответы [ 2 ]

2 голосов
/ 10 сентября 2011

Похоже, сам ImageView имеет фон.Попробуйте установить цвет фона на прозрачный (например, imageView.setBackgroundColor(0);

0 голосов
/ 03 февраля 2016

использовать формат сжатия как PNG

BufferedOutputStream bos = new BufferedOutputStream(
                fileOutputStream);
        bmpimg.compress(CompressFormat.PNG, 20, bos);
...