Java 将图片转成 Base64 编码字符串(网络+本地)
编辑
8
2024-05-10
在工作中,经常需要将图片转换成Base64编码。我曾尝试从网上复制代码,但发现保存的图片不完整。因此,我决定自己动手丰衣足食,对代码进行了二次加工,现在记录下来分享给大家。
流程分析
从网络或本地加载图片到内存
将内存中的图片转成Base64
PS:大多数情况下,图片显示不完整是由于网络传输过程中的分包传输,导致并非一次性将整个图片传输完成。如果仅获取了部分数据,就会导致图片显示不完整。
工具模块
使用 Apache Commons Codec 的 Base64 模块可以替换成其他模块,但需要注意的是,不同的 Base64 模块可能遵循不同的规范,导致转换后的结果可能会带有换行符。
流程简单,不再赘述,直接展示代码:
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.commons.codec.binary.Base64;
public class ImageUtils {
// 将本地图片转成Base64
public static String toBase64(String imgpath) {
InputStream inputStream = null;
try {
inputStream = new FileInputStream(imgpath);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return toBase64(inputStream);
}
// 通过网络URL将图片转成Base64
public static String toBase64(URL url) {
// 打开链接
HttpURLConnection conn;
InputStream inStream = null;
try {
conn = (HttpURLConnection) url.openConnection();
// 设置请求方式为"GET"
conn.setRequestMethod("GET");
// 超时响应时间为5秒
conn.setConnectTimeout(5 * 1000);
// 通过输入流获取图片数据
inStream = conn.getInputStream();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 生成base64
return toBase64(inStream);
}
}
- 0
- 0
-
赞助
支付宝微信 -
分享