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属性的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-08-08Spring Security实现两周内自动登录"记住我"功能
登录过程中经常使用的“记住我”功能,也就是我们经常会在各种网站登陆时见到的"两周内免登录",“三天内免登录”的功能。今天小编给大家分享基于Spring Security实现两周内自动登录"记住我"功能,感兴趣的朋友一起看看吧2019-11-11一文搞懂Java常见的三种代理模式(静态代理、动态代理和cglib代理)
Java中常见的三种代理模式是静态代理模式、动态代理模式和CGLIB代理模式,本文就来给大家详细的讲解一下这三种代理模式,感兴趣的小伙伴跟着小编一起来看看吧2023-08-08springboot实现jar运行复制resources文件到指定的目录(思路详解)
这篇文章主要介绍了springboot实现jar运行复制resources文件到指定的目录,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-04-04
最新评论