我正在尝试使用 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/