我正在尝试使用AndroidImageSlider库,并用我以base64字符串下载的图像填充它。

该库仅接受URL,R.drawable值和File对象作为参数。

我试图将图像字符串转换为File对象,以便传递给库函数。到目前为止,我已经能够从base_64解码并转换为byte []。

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

最佳答案

您需要将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;
}


它在您的应用程序的“缓存”目录中创建一个临时文件。但是,一旦不再需要该文件,您仍然有责任删除它。

08-28 14:13