2010-01-21 4 views
3

Может показаться сумасшедшим, но это то, что мне нужно сделать. Я хочу взять объект Bitmap и использовать XMLPullParser/XmlSerializer, чтобы записать его в плоский файл. Очевидно, что мне нужно будет прочитать тег XML обратно в объект Bitmap.Как написать Bitmap в файл XML

Я пробовал разные вещи, похожие на то, как я пишу и читаю растровые изображения из базы данных.

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

Где я заблудился это, когда я пишу это, чтобы мой файл XML в виде строки, я никогда не могу получить его преобразовать обратно правильно. Любые указатели приветствуются.

Редактировать: Я хочу предоставить немного больше информации. Я пишу много XML-данных для целей резервного копирования, поэтому загрузка или время записи не вызывает беспокойства. Это не является основным источником данных (основным источником является база данных SQLite). Я не хочу писать несколько очень маленьких (48x48pixel) изображений, если я могу помочь.

Я читаю в моем XML с помощью XMLPullParser, которая считывает строку:

if (name.equalsIgnoreCase("someXmlTag")){ 
String someString = parser.nextText(); 

Я пишу мой XML с помощью XmlSerializer, который записывает строку:

  XmlSerializer serializer = Xml.newSerializer(); 
     StringWriter writer = new StringWriter(); 
      serializer.setOutput(writer); 
      serializer.startDocument("UTF-8", true); 
      serializer.startTag("", "someTag"); 
          serializer.text(someString); 

Так или иначе Мне нужно превратить битмап в строку, а затем превратить эту строку в растровое изображение. Я сделаю некоторые поиски на Base64, чтобы узнать, есть ли у меня хорошие примеры.

ответ

1

XMLPullParser, как следует из его названия, синтаксический анализатор, он не используется для записи XML. Лучше всего хранить его как Base64, как упоминалось ранее.

Излишне говорить, что это займет много места без уважительной причины.

Это также будет намного медленнее для чтения.

+0

Я обновил свое сообщение с дополнительной информацией, которая очищает несколько вещей. Я сделаю некоторые поиски на Base64, чтобы узнать, какие у меня варианты. – pcm2a

Смежные вопросы