返回顶部
首页 > 资讯 > 服务器 >java使用hutool把服务器图片链接转为base64编码
  • 492
分享到

java使用hutool把服务器图片链接转为base64编码

java开发语言servlet 2023-10-01 08:10:30 492人浏览 独家记忆
摘要

需求是把服务器的图片链接或者网上的图片链接地址转为base64位编码方便前端操作 建议使用方法一 base64编码转为图片在线网址 https://imgtobase64.d777.com/ 方法一:

需求是把服务器的图片链接或者网上的图片链接地址转为base64位编码方便前端操作

建议使用方法一

base64编码转为图片在线网址
https://imgtobase64.d777.com/

方法一:使用hutool的HttpResponse方法

1.1 引入依赖

<dependency>   <groupId>cn.hutool</groupId>    <artifactId>hutool-all</artifactId>    <version>5.7.22</version></dependency>

1.2 代码

import cn.hutool.http.HttpRequest;import cn.hutool.http.HttpResponse;import sun.misc.BASE64Encoder;import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.util.regex.Matcher;import java.util.regex.Pattern;public class UrlToBase64Util {//base64前缀private static final String BASE64_PREFIX="data:image/png;base64,";public static void main(String[] args) throws Exception {String url="https://localhost:8080/upload/file/20221101/test.png";System.out.println(BASE64_PREFIX+imageUrlToBase64(url));}public static String imageUrlToBase64(String imgUrl) {InputStream is = null;ByteArrayOutputStream outStream = null;try {if (!ObjectUtils.isEmpty(imgUrl)) {HttpResponse res = HttpRequest.get(imgUrl).execute();// 获取输入流is = res.bodyStream();outStream = new ByteArrayOutputStream();//创建一个Buffer字符串byte[] buffer = new byte[1024];//每次读取的字符串长度,如果为-1,代表全部读取完毕int len = 0;//使用输入流从buffer里把数据读取出来while ((len = is.read(buffer)) != -1) {//用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度outStream.write(buffer, 0, len);}// 对字节数组Base64编码return encode(outStream.toByteArray());}} catch (Exception e) {e.printStackTrace();} finally {try {if (is != null) {is.close();}if (outStream != null) {outStream.close();}} catch (Exception e) {e.printStackTrace();}}return null;}public static String encode(byte[] image) {BASE64Encoder decoder = new BASE64Encoder();return replaceEnter(decoder.encode(image));}public static String replaceEnter(String str) {String reg = "[\n-\r]";Pattern p = Pattern.compile(reg);Matcher m = p.matcher(str);return m.replaceAll("");}}

方法二:使用自带的请求,有的网址会报错,建议用第一种

import org.springframework.util.ObjectUtils;import sun.misc.BASE64Encoder;import java.io.*;import java.net.HttpURLConnection;import java.net.URL;import java.util.regex.Matcher;import java.util.regex.Pattern;public class UrlToBase64 {//base64前缀private static final String BASE64_PREFIX="data:image/png;base64,";public static void main(String[] args) throws Exception {String url="https://localhost:8080/upload/file/20221101/test.png";System.out.println(BASE64_PREFIX+imageUrlToBase64(url));}        public static String imageUrlToBase64(String imgUrl) {        URL url = null;        InputStream is = null;        ByteArrayOutputStream outStream = null;        HttpURLConnection httpUrl = null;        try {if (!ObjectUtils.isEmpty(imgUrl)) {// 如果服务器图片地址带有中文,最好处理一下String[] argss = imgUrl.split("/");String name1 = argss[argss.length - 1];String name2 = java.net.URLEncoder.encode(name1, "utf-8");// 处理中文名String newUrl = imgUrl.replace(name1, name2);url = new URL(newUrl);httpUrl = (HttpURLConnection) url.openConnection();httpUrl.connect();httpUrl.getInputStream();is = httpUrl.getInputStream();outStream = new ByteArrayOutputStream();//创建一个Buffer字符串byte[] buffer = new byte[1024];//每次读取的字符串长度,如果为-1,代表全部读取完毕int len = 0;//使用输入流从buffer里把数据读取出来while ((len = is.read(buffer)) != -1) {//用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度outStream.write(buffer, 0, len);}// 对字节数组Base64编码return encode(outStream.toByteArray());}        } catch (Exception e) {            e.printStackTrace();        } finally {            try {                if(is != null) {                    is.close();                }                if(outStream != null) {                    outStream.close();                }                if(httpUrl != null) {                    httpUrl.disconnect();                }            } catch (Exception e) {                e.printStackTrace();            }        }        return null;    }        public static String encode(byte[] image){        BASE64Encoder decoder = new BASE64Encoder();        return replaceEnter(decoder.encode(image));    }        public static String replaceEnter(String str){        String reg ="[\n-\r]";        Pattern p = Pattern.compile(reg);        Matcher m = p.matcher(str);        return m.replaceAll("");    }}

来源地址:https://blog.csdn.net/weixin_45559862/article/details/127628944

--结束END--

本文标题: java使用hutool把服务器图片链接转为base64编码

本文链接: https://lsjlt.com/news/422184.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作