需求是把服务器的图片链接或者网上的图片链接地址转为base64位编码方便前端操作 建议使用方法一 base64编码转为图片在线网址 https://imgtobase64.d777.com/ 方法一:
需求是把服务器的图片链接或者网上的图片链接地址转为base64位编码方便前端操作
base64编码转为图片在线网址
https://imgtobase64.d777.com/
<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.22</version></dependency>
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
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0