从 Base64 字符串获取图像文件 Android Studio

Get image file from Base64 String Android Studio

这是我的代码

wv.setDownloadListener(new DownloadListener() {
   @Override
   public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {

如果 url 变量打印到 logcat 将显示:

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkI....

如何使用此 base64 字符串将图像文件下载到 android 下载目录?

我应该在 onDownloadStart() 函数中做什么?

感谢帮助

您必须将 base64 字符串转换为 byte 数组。

请注意,将整个 base64 字符串与 data:image/jpeg;base64, 一起转换不会得到您想要的输出。所以你必须删除那部分。

您可以使用以下函数删除 data:image/jpeg;base64,

public static String parseBase64(String base64) {

    try {
        Pattern pattern = Pattern.compile("((?<=base64,).*\s*)",Pattern.DOTALL|Pattern.MULTILINE);
        Matcher matcher = pattern.matcher(base64);
        if (matcher.find()) {
            return matcher.group().toString();
        } else {
            return "";
        }
    } catch (Exception e) {
        e.printStackTrace();

    }
    return "";
}

您可以使用以下功能将图像保存为文件

private void downloadFileFromBase64(String fileContent) {
    try {
        File file = new File(Environment.getExternalStorageDirectory()+"/com/myApp/img/");
        if(!file.exists()){
            file.mkdirs();
            if (fileContent != null) {
                String attachment = parseBase64(fileContent);
                byte[] byteArr = Base64.decode(attachment, Base64.DEFAULT);
                File f = new File(file.getAbsolutePath(),"sample.jpg");
                f.createNewFile();
                FileOutputStream fo = new FileOutputStream(f);
                fo.write(byteArr);
                fo.close();
                Toast.makeText(getApplicationContext(), "File downloaded", Toast.LENGTH_SHORT).show();
        }


        }}catch (Exception e){
        e.printStackTrace();
    }
}

这是我的 base64 字符串

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCASwBwgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9U6KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoorI8T+L/CfgnTP7b8Z+KNJ0DTvMWH7Xql7Faw+Y2dq75GC5ODgZycGgDXorN8O+JfDni/SIPEHhPX9N1rS7ksIb3TruO5t5SrFW2yRkq2GUg4PBBHatKgAooooAKKKKACiiigAooooAKKK5fSPin8MfEHiKbwhoPxH8L6lrts0qTaXZ6xbzXcbRnEgaFHLgqQQ2RwetAHUUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFfI37SEP/BQN/ihdN+zxdRR+Dfslv5AYaNnz9n73/j6Bl+968elfXNFAH5t+NPFX/BVH4e+FdT8a+LddhstH0iA3N5cCDw9KY4wQCdiIWbqOACawPhJ8ZP8AgpV8c9EvPEfwx8XR6tp9hdmyuJWstCt9kwRX27ZYlJ+V1OQMc19vftj/APJr/wAR/wDsCSf+hLXhP/BKP/ki3i3/ALGhv/SSCgDI8Hwf8FUx4t0Q+Lb2E6GNRtv7TAHh7JtPNXzvuLv+5u+783pzX3lRVXU9T07RdOutX1e+gsrGyhee5uZ5AkcMajLOzHgAAEkmgC1RXw349/4KfaDH4kfwz8FvhbqfjRkdkW8lmaBZ8dWihSN5GX3baeOlVvCf/BUK0svEMegfGn4Oar4TR9u65t5nleEHI3PbyRo+3jqpY9cA0AfdtFZ3h3xFoXi7Q7HxN4Z1W21LStShW4tLu3cPHLG3Qg/06g5B5rwD9q79saL9l7XPDOkz/D0+IovEMM87zLqv2Q2yxuinC+TJvyHz1Xp70AfSFFfHnxk/4KJeHvCfiq68D/BvwDe/ETUtPJW9u7WVltImHBVDGjtLg8EgKvoxrl/hr/wVH8O6n4mj8N/F74cXHhOOSUQtqFtdNcJbOeP30LIrooOMkFiP7tAH3XRUNneWmoWkF/YXMVxbXMazQzROHSRGGVZWHBBBBBFTUAFfGXxr/bn+K3gjxprvgnwF+zfrGqf2NeS2a6tdLcyW9wUYjekcUQypxkHzK+zaKAPz2/Zd/bP+Pvxn/aW0X4feO5dL0rSnTUBe6VZaZ5B82G2lYK7Sl5VKuoyNw5GD6V+hNflz+zt/yk28T/8AY0eLf53dfqNQBR13W9J8NaLf+Itev4rLTdMtpLu7uZWwkMMalncn0ABNfntf/taftX/tR+OdQ8L/ALKuhDQ/D+nMN9/JDAZhESQslxNPuji3YyI0G/g8tg17r/wUg8V3nhn9mDVLOyneF/EGp2WkuyHBMZZpnX6FYCD6gmpf+CcvhLT/AA5+y3oGrW9qkd34jvL7UbtwPmkZbh4EyfQRwpge59aAPn/xX43/AOCj/wCzTar468eajZ+LPDNuym+3Jb3cEQLAfvDGqTxg5xvHyjIyegr7M/Zz+P3hf9ov4dW/jjw9C1ncxyG11PTpHDSWV0oBKZH3lIIZWwMg9AQQPQ9d0XTPEmi3/h7WrRLrT9TtpbO6hcArJFIpV1IPYgkV+b3/AATH1e+8JfHn4gfCx53ktZdNmlfnAM9ldLErY9Ss8n5UAfpfRRRQB+cX7bv7W/7Qnwh+Pmo+Cvh38QP7J0WDT7OeO2/sqxn2vJHlzvmhdzk++PSvsf8AZd+L5+OPwP8ADXj26nSTVJbf7Hq4RQuL6E7JTtHChiBIAOiutfDf7UXhzRvGP/BRLQ/CPiG3E+m65/ZOm3KEdUmh8skehG7IPYgGuo/4J5+J9X+Dvxt8e/sueMZtkz3M1xZBhtV7y2+WQoDyfNgCyDr8sIoA/RKo7ieG1gkurmVIoYUMkjucKqgZJJ7ACpK+av8AgoF8Xf8AhVv7POq6fYXXlav4wb+wrPacMsUik3D8c4EQZc9mkWgD4g+JH/B