android - Html.imageGetter 不显示 Base64 android 中的图像

标签 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”,我会得到一个小灰色方 block 。

有什么想法吗?

最佳答案

过了好久... 从数据库获取 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;
            }
        }

关于android - Html.imageGetter 不显示 Base64 android 中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10637118/

相关文章:

java - 没有 apk 文件存在 PhoneGap 项目

android - 使用 InAppBrowser - Cordova 从外部网站下载文件

javascript - 如何将 Fetch API 解析 Blob 结果转换为 Base64

java - 在 SVG 中创建图像并使用 Base64 编码 URI 和 JAVA 在 HTML 中渲染它们

c++ - 在tensorflow c++中是否有将base64字符串解码为张量的函数?

css - 将 base64 编码的字符串解码为字体文件 - unicode 范围

iPhone 3.2 Base64 编码

android - 如何同时启动两个媒体播放器(并同步播放)?

Android Phonegap 滑动类型

android - 从android中的sqlite数据库获取字符串、日期、时间和int