文件导出是一个最基本的功能,往往我们需要对图片进行压缩,来加快导出速度。但是目前ps图片盛行,p过的图片保存就会是CMYK模式,导致不支持
1.导出的方法
//导出图片
List<File> fileList = FileExportImportUtil.bufferImage(pictureList, picDir, nameList);
2.报错的地方为ImageIo.read
public static List<File> bufferImage(List<String> picList, String dir, List<String> nameList) throws Exception {
List<File> fileList = new ArrayList<>();
for (int i = 0; i < picList.size(); i++) {
File file2 = new File(picList.get(i).toString());
String tile = file2.getName();//获取图片名称
String picUrl = dir + "/" +i+ tile;
URL url = new URL(picList.get(i).toString());//声明url对象
URLConnection connection = url.openConnection();
String message = connection.getHeaderField(0);
boolean b = false;
if (message.indexOf("200") > -1) {
b = true;
URL url1 = new URL(picList.get(i).toString());//声明url对象
System.out.println("url =======================" + picList.get(i).toString());
URLConnection connection1 = url1.openConnection();
connection1.setDoOutput(true);
BufferedImage src = ImageIO.read(connection1.getInputStream());
File file1 = new File(picUrl);
ImageIO.write(src, "JPEG", file1);
String path = file1.getAbsolutePath();
for (int j = 0; j < nameList.size(); j++) {
if (i == j) {
String name = file1.getName();
String path1 = path.substring(0, path.length() - name.length() - 1);
File file3 = new File(path1 + "/" + nameList.get(j) + ".jpg");
if (file3.exists()) {
file3.delete();
}
file1.renameTo(file3);
fileList.add(file3);
}
}
}
if (!b) {
continue;
}
}
return fileList;
}
3.解决方法:在pom.xml中添加处理cmyk格式的jar就行了
<!--图片压缩-->
<dependency>
<groupId>com.twelvemonkeys.imageio</groupId>
<artifactId>imageio-jpeg</artifactId>
<version>3.3.2</version>
</dependency>