一 概述
本次将Jar包中的文件获取之后,然后将文件转成图片。jar包中文件为:
String imgPath = AppLoanImageDealServiceImpl.class.getClassLoader().getResource("common/images/white.png").getPath();imgPath: file:/xx/xx.jar!/BOOT-INF/classes!/common/pic/source.png
BufferedImage image = null;image = ImageIO.read(targetFile); //提示无法读取文件
二 示例
错误示例:获取的文件失败,file为null
import org.apache.commons.io.FileUtils;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
//resurce目录下的文件路径
String imageUrl = "/common/pic/source.png"
File file = new ClassPathResource(imageUrl).getFile();
image = ImageIO.read(file);
错误示例:获取的stream均为null
BufferedImage image = null;
String sourceFile = "common/pic/soruce.png" //不能使用/作为路径开始,否者为stream为null
InputStream stream = ClassLoader.getSystemResourceAsStream(sourceFile);
或者
InputStream stream = this.getClass().getClassLoader().getResourceAsStream(sourceFile);
或者
InputStream stream = ImageUtils.class.getResourceAsStream(sourceFile);
File targetFile = new File(newFile.get(0));
FileUtils.copyInputStreamToFile(stream, targetFile);
image = ImageIO.read(targetFile);
正确示例:
//resurce目录下的文件路径
String imageUrl = "/common/pic/source.png"
BufferedImage image = null;
InputStream inputStream = new ClassPathResource(imageUrl).getInputStream();
String newFile = UUID.randomUUID().toString() + ".png";
File targetFile = new File(newFile);
FileUtils.copyInputStreamToFile(inputStream, targetFile);
FileUtils.forceDeleteOnExit(targetFile);
image = ImageIO.read(targetFile);