使用JDK把图片资源转为Base64编码并返回(免费分享,皆可复制粘贴)
在Java实际应用开发过程中,我们需要使用指定的背景图案,例如大型游戏中的一些基本图案,例如礼物、场景、武器造型等等,通俗来说就是图片源文件,专业点说叫资源,这些都需要后端把固定资源丢出,然后前端进行渲染。
所以这里简单丢一个工具类,无需引用任何包,使用JDK自带的工具,实现将图片或者媒体资源,转为Base64编码返回。
先写一个简单的示例(若不喜欢,可以直接跳到文末,可直接复制粘贴使用)
打开idea,新建一个工程,(jdk版本是8,或者更高都行),如图
第二步,在resources包下新建一个包 picture,如图,这里我只存放2个图片资源
第三步开始编程,将2张图片资源转为Base64编码并返回(亲测有效,代码中有注释)
public class PictureDemo {
public static void main(String[] args) throws IOException {
String urlZero = "picture/starless.png";
String urlOne = "picture/star.png";
LinkedList<String> picturePathList = new LinkedList<>();
LinkedList<String> pictureBase64List = new LinkedList<>();
picturePathList.add(urlZero);
picturePathList.add(urlOne);
for (String url : picturePathList) {
String code = base64ToPicture(url);
pictureBase64List.add(code);
}
pictureBase64List.forEach(System.out::println);
}
public static String base64ToPicture(String url) throws IOException {
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(url);
assert inputStream != null;
byte[] bytes = IOUtils.toByteArray(inputStream);
byte[] encodeBytes = Base64.getEncoder().encode(bytes);
return new String(encodeBytes, StandardCharsets.UTF_8);
}
}
由此可见,以后若有固定资源加载,可以使用JDK提供的工具类简化。
以下为提取的工具类,可直接复制粘贴(教程较为通俗易懂)
public class PictureUtil {
public String base64ToPicture(String resource) throws IOException {
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);
byte[] bytes = IOUtils.toByteArray(inputStream);
byte[] encodeBytes = Base64.getEncoder().encode(bytes);
return new String(encodeBytes, StandardCharsets.UTF_8);
}
}