ImageIO 导出图片出现Unsupported Image Type

文件导出是一个最基本的功能,往往我们需要对图片进行压缩,来加快导出速度。但是目前Photoshop图片盛行,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>
 
 

展开阅读全文

没有更多推荐了,返回首页