2010-01-21 108 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