Html.imageGetter不会在Base64 android中显示img

时间:2012-05-17 13:56:31

标签: android base64

我正在尝试使用Html.fromHtml

在Base64中显示img

我有一个标签,其中包含一个图像的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页面中测试了这个字符串并且正常工作。显示图片。

我使用的是Android 1.6。 这个Base64类:http://androidcodemonkey.blogspot.com/2010/03/how-to-base64-encode-decode-android.html

我没有错误。但没有任何表现。 如果我将返回值改为'null',我会得到一个小灰色方块。

任何想法?

1 个答案:

答案 0 :(得分:3)

很长一段时间后...... 从db获取图像字节(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;
            }
        }