Как записать растровое изображение в файл XML - PullRequest
3 голосов
/ 21 января 2010

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

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

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

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

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

Я читаю в своем 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, чтобы посмотреть, получу ли я какие-нибудь хорошие примеры.

Ответы [ 2 ]

2 голосов
/ 21 января 2010

Я бы предложил использовать что-то вроде Base64 кодирования.

1 голос
/ 21 января 2010

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

Само собой разумеется, это займет много места без веской причины.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...