Html.imageGetter не показывает img в Base64 android

Я пытаюсь показать img в Base64 с помощью Html.fromHtml

У меня есть тег со строкой Base64 одного изображения.

Это мой код:

public class GlossaryAdapter extends BaseAdapter{

    ...
    private Resources res;

    public GlossaryAdapter(Context context, ...) {
        this.res = context.getResources();
        ...
    }

    public View getView(int position, View convertView, ViewGroup arg2) {
        ...
        holder.tvContent.setText(Html.fromHtml(glossary.getContent(), new Html.ImageGetter() {
        @Override
        public Drawable getDrawable(String source) {            
                try {
                     byte[] data;
                     data = Base64.decode(source,Base64.DECODE);
                     Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);    
                     return new BitmapDrawable(res, bitmap);
                } catch (IOException e) {
                    e.printStackTrace();
                    return null;
                }
            }
        }, null));

glossary.getContent() содержит:

<img src="AAAY5671NF..." />

Я проверил эту строку на странице html и работает. Покажите изображение.

Я использую Андроид 1.6. И этот класс Base64: http://androidcodemonkey.blogspot.com/2010/03/how-to-base64-encode-decode-android.html

У меня нет ошибок. Но ничего не показывает. Если я изменю возврат на «ноль», я получу маленький серый квадрат.

есть идеи?


person Munir    schedule 17.05.2012    source источник
comment
кто-нибудь? Я делаю «bitmap.getWidth()» и «bitmap.getHeight()» и получаю правильную ширину и высоту изображения. Но когда я использую растровое изображение, я получаю NPE.   -  person Munir    schedule 18.05.2012


Ответы (1)


Спустя долгое время... получить imageBytes (BLOB) из БД. Кодировать в Base64 и передать в src. Декодировать и установить границы растрового изображения. Работает!

@Override
    public Drawable getDrawable(String source) {            
            try {
                 byte[] data;
                 data = Base64.decode(source,Base64.DECODE);
                 Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);    
                 Drawable d = new BitmapDrawable(res, bitmap);
                 d.setBounds(0,0,72,72)   // <-----
                 return d;
            } catch (IOException e) {
                e.printStackTrace();
                return null;
            }
        }
person Munir    schedule 24.05.2012