2010-01-21 5 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); 

을 그래서 어떻게 든을

나는 문자열을 읽는 XMLPullParser를 사용하여 내 XML에 읽고있다 내 비트 맵을 문자열로 변환 한 다음 해당 문자열을 다시 비트 맵으로 변환해야합니다. Base64에서 몇 가지 검색을 수행하여 좋은 예가 있는지 확인합니다.

답변

1

XMLPullParser은 이름에서 알 수 있듯이 파서이므로 XML을 작성하는 데 사용되지 않습니다. 가장 좋은 방법은 앞서 언급 한 것처럼 Base64으로 저장하는 것입니다.

말할 필요도없이, 이것은 정당한 이유없이 많은 공간을 차지할 것입니다.

다시 읽는 것이 훨씬 느립니다.

+0

몇 가지 정보를 정리하여 게시물을 업데이트했습니다. 내 옵션이 무엇인지 알아보기 위해 Base64에서 몇 가지 검색을 수행 할 것입니다. – pcm2a

관련 문제