可能听起来很疯狂,但这是我需要做的。我想获取一个Bitmap对象并使用XMLPullParser / XmlSerializer将其写入平面文件。显然,我需要将XML标记读回Bitmap对象。
我尝试了各种各样的东西,类似于我从数据库中编写和读取Bitmaps的方式。
Bitmap bitmap = ((BitmapDrawable) icon).getBitmap();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.PNG, 0, outputStream);
byte[] bitmapByte = outputStream.toByteArray();
我迷失的地方是,一旦我将其作为String写入我的XML文件,我就永远无法将其正确转换回来。任何指针都表示赞赏。
编辑: 我想提供更多信息。我正在写出大量的XML数据用于备份目的,因此加载或写入时间无关紧要。这不是数据的主要来源(主要来源是SQLite数据库)。如果我能提供帮助,我也不想写出几张非常小的(48x48像素)图像。
我正在使用XMLPullParser读取我的XML,它读取一个String:
if (name.equalsIgnoreCase("someXmlTag")){
String someString = parser.nextText();
我正在使用XmlSerializer写出我的XML,它写了一个字符串:
XmlSerializer serializer = Xml.newSerializer();
StringWriter writer = new StringWriter();
serializer.setOutput(writer);
serializer.startDocument("UTF-8", true);
serializer.startTag("", "someTag");
serializer.text(someString);
所以不知何故,我必须将我的Bitmap转换为String,然后将该String转换回Bitmap。我将在Base64上进行一些搜索,看看我是否有任何好的例子。
答案 0 :(得分:2)
我建议使用类似Base64编码的内容。
答案 1 :(得分:1)
正如其名称所示,XMLPullParser
是一个解析器,它不用于编写XML。您最好的选择是将其存储为Base64
,如前所述。
毋庸置疑,这将占用大量空间,没有充分理由。
回读也会慢得多。