2015-01-07 5 views
0

Я создаю файлы vCard из своего приложения для Android. Я храню данные вручную (без использования каких-либо libray) Я могу написать данные, прочитать и проанализировать их в своем приложении. Но когда я сохраняю изображение. У меня есть два вопроса.Сохранение изображения в VCard и чтение с него в коде Android вручную

1) Я не могу сохранить изображение, снятое с помощью камеры .., которая выдает исключение из памяти, в то время как запись основной кодированной строки в vcard.

2) Я могу сохранить базовую 64 кодированную строку некоторого изображения, которое я взял в галерее, но при чтении ее не получается. Image Я возвращаю все данные из vCard по строкам и в кодировке base64 строка не приходит как одна строка. (Обратите внимание, что я сохранил каждое значение в файле, используя \ r \ n)

Пожалуйста, дайте мне знать, как правильно это сделать.

фрагменты кода

Кодирование

   ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
       bm.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream); 
       byte[] byteArray = byteArrayOutputStream .toByteArray(); 
       encodedProfileImage = Base64.encodeToString(byteArray, Base64.DEFAULT); 

Запись

fw = new FileWriter(vcfFile); 

...

fw.write("PHOTO;ENCODING=BASE64;TYPE=PNG:"+encodedProfileImage + "\r\n"); 

Чтение и декодирование

else if(strline[0].equals("PHOTO;ENCODING=BASE64;TYPE=PNG")){ 
           String imagestr=strline[1]; 
           byte[] byteArray = Base64.decode(imagestr, Base64.DEFAULT); 
           card.profileImage = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); 

          }  

ответ

0

При чтении его можно использовать BitmapFactory.Options

http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html

Используйте вызов decodeByteArray, который принимает BitmapFactory.Options в качестве последнего аргумента.

если вы установите inSampleSize = 2

Это уменьшит размер входящего изображения на что-то управляемым.

BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inSampleSize = 2; //Scale it down 
    options.inPreferredConfig = Bitmap.Config.RBG_565; // Less memory 
+0

По-прежнему не повезло. Я тоже попробовал URL. В этом случае я могу сохранить его и проанализировать, но я не получаю изображение в Контакты. – Sana

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

  • Нет связанных вопросов^_^