我想显示一个图像作为blob保存在我的数据库中。我正在使用ORMLite和Android 1.6。 我创建了一个TextView谁表现出“html.FromHtml”存储和查看图像blob html.fromhtml android
下面是代码:
//Save the image in DB.
...
Bitmap myBitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory().toString()+"/images/imagem.png");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
myBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
glossary.setImageBytes(byteArray);
“词汇表”是词汇的一个实例。谁拥有该领域“imageBytes”:
@DatabaseField(dataType = DataType.BYTE_ARRAY)
private byte[] imageBytes;
在我的活动我通过这个“imageBytes”字符串使用“html.FromHtml”:
//Activity
...
String htmlContent = "<h1> Title </h1>
<img src=\""+glossary.getImageBytes.toString()+"\" />"
现在在我的适配器我试图展示'htmlContent'的内容:
//Adapter
...
holder.tvContent.setText(Html.fromHtml(htmlContent, new Html.ImageGetter() {
@Override
public Drawable getDrawable(String source) {
byte[] data;
data = source.getBytes();
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
//Log.i("bitmap", "bitmap height:" + String.valueOf(bitmap.getHeight));
//THIS LOG RETURN NPE
Drawable d = null;
d = new BitmapDrawable(getResources(),bitmap);
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
return d;
}
}, null));
...
我认为问题在于当我将字节更改为字符串并将字符串更改为字节时。由于'BitmapFactory.decodeFile()'创建的位图正在返回一个NPE。
但我不知道如何解决这个问题。
有什么建议吗? thx!
嗯。好的,我改变了。但'bitmap.getHeight'仍然返回一个NPE。如果我评论他,显示器会显示一个字节码。 – Munir
@Munir你可以调试你的程序,并确保你从你输入的进程中获得相同的'byte []'?我怀疑你不是。 – Gray
'getDrawable(String source)'方法在我的标签''中处理'src'的内容。如果我通过一条路径并从这条路径创建一个位图,我就得到了显示的图像(我做了这个测试)。所以我想'src'的'byte []'里面的活动和'getDrawable(String source)'的'source'是一样的。对不起英文。 – Munir