Java 保存图片至本地 Base64

图片路径下载版本:

      public String saveImg(String img_url, String savename) {
        InputStream input = null;
        OutputStream os = null;

        try {
            URL url = new URL(img_url);
            // 打开URL连接
            URLConnection con = url.openConnection();
            // 得到URL的输入流
            input = con.getInputStream();
            // 设置数据缓冲
            byte[] bs = new byte[1024 * 2];
            // 读取到的数据长度
            int len;
            // 输出的文件流保存图片至本地
            os = new FileOutputStream(aLiYunConfig.path + savename);
            while ((len = input.read(bs)) != -1) {
                os.write(bs, 0, len);
            }
        } catch (Exception e) {
            logger.error("图片保存失败:{}", e.getMessage());
        } finally {
            try {
                os.close();
                input.close();
            } catch (Exception e) {

                logger.error("数据流关闭失败:{}", e.getMessage());
            }
        }
        return "img/" + savename;
    }

Base64图片保存(base64删掉头部data:?base64,不然保存图片会有问题)

public String saveImg(String imgstr, String savename) {
        BufferedImage image = null;
        byte[] imageByte = null;
        try {
            imageByte = DatatypeConverter.parseBase64Binary(imgstr);
            image = ImageIO.read(new ByteArrayInputStream(imageByte));
            File outpuFile = new File(aLiYunConfig.path + savename);
            ImageIO.write(image,"jpg",outpuFile);
        } catch (Exception e) {
            logger.error("图片保存失败:{}", e.getMessage());
            return null;
        }
        return "img/" + savename;
    }

 

JavaBase64是一种用于编码二进制数据的算法。在Java中,使用JavaBase64可以将字节数组编码为字符串,也可以将字符串解码回字节数组。如果要将JavaBase64解码的数据转化为图片并保存到本地,可以按照以下步骤进行: 1. 使用JavaBase64的解码方法将字符串解码为字节数组。 2. 创建一个文件输出流,指定保存图片的路径和文件名。 3. 将字节数组写入文件输出流,生成图片文件。 下面是一个示例代码: ``` import java.io.FileOutputStream; import java.io.IOException; import java.util.Base64; public class Base64Decoder { public static void main(String[] args) { String base64String = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAA3NCSVQICAjb4U/gAAAABlBMVEX///+ZmZkzrOgQAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAe1JREFUOMvNj1EOgzAMRO/8/NnW6kF9AH3WgRdVpEeT5HBUVXzIq+cOo7cMbiCP0AsT7lB28vJW5DbTz7h4z5Mm4XZK4dR7y7qO/fSCNxU9uABlzhm58QbyD5w9wL5xR8wZzo2UMTtGvQaL7Cp7x6j/ffPf6SxVWgEaxo6c+oKcDdP6fK1n4cRKoCkLqQ3aFAp+P5IyDZs8yKQbiqKtODl14G0jsv9gO3jbfjA35LHt2jy3CT1LwP7A9eGyfj3d5M+4COBv8IZfnd+Kll8H+Qb2oDcgAAAABJRU5ErkJggg=="; byte[] imageBytes = Base64.getDecoder().decode(base64String); try (FileOutputStream fos = new FileOutputStream("test.png")) { fos.write(imageBytes); } catch (IOException e) { e.printStackTrace(); } } } ``` 在上述示例中,将base64编码的字符串转化为字节数组后,使用文件输出流将字节数组写入到本地文件“test.png”中。需要注意的是,如果文件已经存在,会覆盖原来的文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值