2010-01-21 97 views
3

听起来很疯狂,但这是我需要做的。我想要一个Bitmap对象并使用XMLPullParser/XmlSerializer将其写入平面文件。很显然,我需要将XML标签读回Bitmap对象。如何将位图写入XML文件

我尝试了各种各样的事情,类似于我从数据库中写入和读取位图的方式。

  Bitmap bitmap = ((BitmapDrawable) icon).getBitmap();     
      ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 
      bitmap.compress(CompressFormat.PNG, 0, outputStream); 
      byte[] bitmapByte = outputStream.toByteArray(); 

当我迷路是一次我写了这一点,我的XML文件作为一个字符串,我永远不能把它改回正常。任何指针表示赞赏。

编辑: 我想提供一点信息。为了备份目的,我写出了大量的XML数据,因此加载或写入时间无关紧要。这不是数据的主要来源(主要来源是SQLite数据库)。我不想写出几个非常小的(48x48像素)图像,如果我能帮上忙的话。

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); 

我在我的XML使用XMLPullParser,其内容为一个字符串阅读我必须将我的位图变成一个字符串,然后将该字符串变成一个位图。我会在Base64上进行一些搜索,看看我是否有任何好的例子。

回答

1

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

不用说,这将需要很多空间,没有很好的理由。

回读的速度也会慢很多。

+0

我已经更新了我的帖子,提供了一些可以清除一些东西的更多信息。我将在Base64上进行一些搜索,看看我的选择是什么。 – pcm2a 2010-01-21 13:16:01