我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

需求是把服务器的图片链接或者网上的图片链接地址转为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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

目录