如何将位图写入XML文件

时间:2010-01-21 05:06:48

标签: android

可能听起来很疯狂,但这是我需要做的。我想获取一个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上进行一些搜索,看看我是否有任何好的例子。

2 个答案:

答案 0 :(得分:2)

我建议使用类似Base64编码的内容。

答案 1 :(得分:1)

正如其名称所示,XMLPullParser是一个解析器,它不用于编写XML。您最好的选择是将其存储为Base64,如前所述。

毋庸置疑,这将占用大量空间,没有充分理由。

回读也会慢得多。