2012-05-14 4 views
3

Мои данные хранятся в формате html на db.base64 image and html.fromhtml android

Изображение хранится в формате base64 (в виде строки в db).

Я пытаюсь показать эти данные.

Мое TextView выставиться как это:

setText(Html.fromHtml(content));

всех HTML-теги в 'содержании' показывается правильно. За исключением тега «img» (который содержит изображение с кодировкой base64).

Итак, мой вопрос: тег 'img' из 'Html.fromHtml' может декодировать строку с изображением base64?

p.s: Место, где тег показывает только серое квадратное поле. Нет ошибок.

thx.

ответ

1

Использование Html.fromHtml в сочетании с вашей собственной реализацией Html.ImageGetter.

См. here.

При переопределении Html.ImageGetter.getDrawable, преобразовать строку Base64 в массив байт (вы можете использовать android.util.Base64) и подачу его в BitmapFactory.decodeByteArray, чтобы произвести Bitmap, которые затем можно передать в конструктор BitmapDrawable вернуться.

Например:

Html.fromHtml(content, new Html.ImageGetter() { 
     @Override 
     public Drawable getDrawable(String source) { 
      byte[] data = Base64.decode(source, Base64.DEFAULT); 
      Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);     
      return new BitmapDrawable(getResources(), bitmap); 
     } 
}, null); 
+0

Я получил эту ошибку: "Base64 не может быть решена. Я использую Android 1.6. И «getResources» говорят: метод getResources() не определен для нового типа Html.ImageGetter() {} – Munir

+0

Android 1.6 не содержит android.util.Base64. Теперь я использую этот http://androidcodemonkey.blogspot.com/2010/03/how-to-base64-encode-decode-android.html. Но getResources все еще возвращает ошибку. – Munir

+0

Вам нужно получить это из «Контекста». –