Я пытаюсь показать изображение, сохраненное как blob в моей БД. Я использую ORMLite и Android 1.6. Я создал TextView, которые показывают «html.FromHtml»store and view image 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' в моем теге' '. Если я пройду путь от него и создаю растровое изображение с этого пути, я получил изображение на дисплее (я сделал этот тест). Поэтому я полагаю, что 'byte []' из 'src' внутри операции одинакова для' source' 'getDrawable (String source)'. Извините за английский. – Munir