2015-05-02 5 views
1

Я пытаюсь использовать библиотеку AndroidImageSlider и заполнять ее изображениями, которые я загрузил в качестве строки base64.Преобразование закодированного изображения base64 в объект File в Android

В библиотеке допускаются только URL-адреса, значения R.drawable и объект File в качестве параметров.

Я пытаюсь преобразовать строку изображения в объект File, чтобы передать библиотечную функцию. Я смог декодировать base_64 и преобразовать в байт [].

String imageData; 
byte[] imgBytesData = android.util.Base64.decode(imageData, android.util.Base64.DEFAULT); 
+1

Я думаю, что, вероятно, лучше создать файл с помощью 'FileOutputStream', а затем обслуживать его с остального URL-адреса на сервере. Предполагая, что данные изображения уже находятся в нужном формате, просто нужно записать данные в файл. См. Этот поток SO: http://stackoverflow.com/questions/20879639/write-base64-encoded-image-to-file – DrewT

+0

Но если я должен был создать «FileOutputStream», как я должен получить доступ к объекту File? Библиотека специально хочет параметр «Файл», есть ли что-то большее для «FileOutputStream»? – apoorvk

+1

просто служат из спокойного URL-адреса после записи изображения в файл. так или иначе кажется, что у вас это исправлено хорошо! – DrewT

ответ

1

Вам нужно сохранить File объект на диск для того, чтобы работать. Этот метод сохранит строку imageData на диск и вернет связанный объект File.

public static File saveImage(final Context context, final String imageData) { 
    final byte[] imgBytesData = android.util.Base64.decode(imageData, 
      android.util.Base64.DEFAULT); 

    final File file = File.createTempFile("image", null, context.getCacheDir()); 
    final FileOutputStream fileOutputStream; 
    try { 
     fileOutputStream = new FileOutputStream(file); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
     return null; 
    } 

    final BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(
      fileOutputStream); 
    try { 
     bufferedOutputStream.write(imgBytesData); 
    } catch (IOException e) { 
     e.printStackTrace(); 
     return null; 
    } finally { 
     try { 
      bufferedOutputStream.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    return file; 
} 

Он создает временный файл в каталоге кэшей приложений. Тем не менее, вы по-прежнему несете ответственность за удаление файла, как только он вам больше не нужен.