JAVA实现网络/本地图片转BASE64存储代码示例

 更新时间:2023年07月28日 11:21:46   作者:小码农~LR  
这篇文章主要给大家介绍了关于JAVA实现网络/本地图片转BASE64存储的相关资料,Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法,需要的朋友可以参考下

网络图片转BASE64

            String encoder = "data:image/jpg;base64,"; //定义图片类型,方便前端直接使用
            ByteArrayOutputStream data = new ByteArrayOutputStream();
            URL url = new URL(picUrl);//picUrl为图片地址
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            InputStream is = connection.getInputStream();
            byte[] bytes = new byte[1024];
            int len = 0;
            while ((len = is.read(bytes)) != -1){
                data.write(bytes,0,len);
            }
            is.close();
            BASE64Encoder base64Encoder = new BASE64Encoder();
            encoder = encoder +  base64Encoder.encode(data.toByteArray()).replace("\r\n","").trim();//这里去掉结果里面的"\r\n",也可以不去,但是不去的话需要使用的时候还是要去掉,所以为了方便就先去掉再存储

如果是本地图片的话,其实和网络图片相差不多的,主要就是读取图片流的形式变一下

    String encoder = "data:image/jpg;base64,"; //定义图片类型,方便前端直接使用
    ByteArrayOutputStream data = new ByteArrayOutputStream();
    String filePath = "filePath";//这里的filePath为本地存放图片的地址
    FileInputStream is = new FileInputStream(filePath);
    byte[] bytes = new byte[1024];
            int len = 0;
            while ((len = is.read(bytes)) != -1){
                data.write(bytes,0,len);
            }
            is.close();
            BASE64Encoder base64Encoder = new BASE64Encoder();
            encoder = encoder +  base64Encoder.encode(data.toByteArray()).replace("\r\n","").trim();//这里去掉结果里面的"\r\n",也可以不去,但是不去的话需要使用的时候还是要去掉,所以为了方便就先去掉再存储

附:Java实现图片和base64之间的互转

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.util.Base64;
public class ImageUtil {
    /**
     * 图片转Base64码
     * @param src
     * @return
     */
    public static String convertImageToBase64Str(String src) {
        ByteArrayOutputStream baos = null;
        try {
            String suffix = src.substring(src.lastIndexOf(".") + 1);
            File imageFile = new File(src);
            BufferedImage bufferedImage = ImageIO.read(imageFile);
            baos = new ByteArrayOutputStream();
            ImageIO.write(bufferedImage, suffix, baos);
            byte[] bytes = baos.toByteArray();
            return Base64.getEncoder().encodeToString(bytes);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (baos != null) {
                    baos.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
    /**
     * Base64码转图片
     * @param base64String
     * @param newSrc
     */
    public static void convertBase64StrToImage(String base64String, String newSrc) {
        ByteArrayInputStream bais = null;
        try {
            String suffix = newSrc.substring(newSrc.lastIndexOf(".") + 1);
            byte[] bytes = Base64.getDecoder().decode(base64String);
            bais = new ByteArrayInputStream(bytes);
            BufferedImage bufferedImage = ImageIO.read(bais);
            File imageFile = new File(newSrc);
            ImageIO.write(bufferedImage, suffix, imageFile);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (bais != null) {
                    bais.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

总结

到此这篇关于JAVA实现网络/本地图片转BASE64存储的文章就介绍到这了,更多相关JAVA图片转BASE64存储内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于@RequestParam name和value属性的区别

    基于@RequestParam name和value属性的区别

    这篇文章主要介绍了@RequestParam name和value属性的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 学习spring事务与消息队列

    学习spring事务与消息队列

    这篇文章主要为大家详细介绍了spring事务与消息队列,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Spring Security实现两周内自动登录

    Spring Security实现两周内自动登录"记住我"功能

    登录过程中经常使用的“记住我”功能,也就是我们经常会在各种网站登陆时见到的"两周内免登录",“三天内免登录”的功能。今天小编给大家分享基于Spring Security实现两周内自动登录"记住我"功能,感兴趣的朋友一起看看吧
    2019-11-11
  • 一文搞懂Java常见的三种代理模式(静态代理、动态代理和cglib代理)

    一文搞懂Java常见的三种代理模式(静态代理、动态代理和cglib代理)

    Java中常见的三种代理模式是静态代理模式、动态代理模式和CGLIB代理模式,本文就来给大家详细的讲解一下这三种代理模式,感兴趣的小伙伴跟着小编一起来看看吧
    2023-08-08
  • Java随机数算法原理与实现方法实例详解

    Java随机数算法原理与实现方法实例详解

    这篇文章主要介绍了Java随机数算法原理与实现方法,简单分析了随机数算法的原理并结合具体实例形式给出了java编程计算随机数的具体操作技巧,需要的朋友可以参考下
    2017-09-09
  • Java 数据结构与算法系列精讲之KMP算法

    Java 数据结构与算法系列精讲之KMP算法

    在很多地方也都经常看到讲解KMP算法的文章,看久了好像也知道是怎么一回事,但总感觉有些地方自己还是没有完全懂明白。这两天花了点时间总结一下,有点小体会,我希望可以通过我自己的语言来把这个算法的一些细节梳理清楚,也算是考验一下自己有真正理解这个算法
    2022-02-02
  • Spring boot实现热部署的两种方式详解

    Spring boot实现热部署的两种方式详解

    这篇文章主要介绍了Spring boot实现热部署的两种方式,这两种方法分别是使用 Spring Loaded和使用spring-boot-devtools进行热部署,文中给出了详细示例代码和介绍,需要的朋友可以参考学习,下面来一起看看吧。
    2017-04-04
  • SpringBoot配置actuator的代码

    SpringBoot配置actuator的代码

    这篇文章主要介绍了SpringBoot配置actuator,这里大家需要注意可以监控SpringBoot 中的 Tomcat 性能数据, 以日志形式定期输出监控数据, 只需要配置一个Bean,需要的朋友可以参考下
    2022-03-03
  • 详解SpringBoot中Session超时原理说明

    详解SpringBoot中Session超时原理说明

    本篇文章主要介绍了详解SpringBoot中Session超时原理说明,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • springboot实现jar运行复制resources文件到指定的目录(思路详解)

    springboot实现jar运行复制resources文件到指定的目录(思路详解)

    这篇文章主要介绍了springboot实现jar运行复制resources文件到指定的目录,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04

最新评论