DB に blob として保存された画像を表示しようとしています。ORMLite と Android 1.6 を使用しています。「html.FromHtml」を表示するtextViewを作成しました
コードは次のとおりです。
//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 を返しているためです。
しかし、それを修正する方法がわかりません。
助言がありますか?どうも!