20只猴子-ImageIO 导出图片出现Unsupported Image Type

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

 

javax.imageio.iioexception: unsupported image typeJava图像输入输出异常的一种,表示不支持或不识别的图像类型。 在Java中,javax.imageio包提供了许多用于读取、写入和操作图像的类和接口。当使用该包中的类进行图像操作时,如果遇到不支持或不识别的图像类型,就会抛出javax.imageio.iioexception: unsupported image type异常。 造成这个异常的原因可能有以下几种情况: 1. 图片格式不受支持:Java的图像处理库支持许多常见的图片格式,如JPEG、PNG、GIF等。如果使用的图片格式不在支持列表中,就会抛出该异常。 2. 图片文件内容损坏:有时候由于网络传输、存储介质损坏或其他原因,图片文件的内容会发生损坏。如果图片文件的内容损坏,读取时就会抛出该异常。 3. 图片文件扩展名错误:某些情况下,Java的图像处理库根据文件的扩展名猜测图片的格式。如果文件扩展名与实际图片格式不匹配,也会导致该异常的发生。 解决javax.imageio.iioexception: unsupported image type异常的方法有: 1. 使用支持的格式:确认所处理的图片格式是Java图像处理库支持的,如果不是,则需将其转换为支持的格式再进行处理。 2. 检查图片文件:检查图片文件是否存在并且没有损坏。可以尝试打开图片文件并查看是否能正常显示。 3. 确认文件扩展名:确保文件的扩展名与实际的图片格式匹配。在加载图片时,可以指定图片的格式,而不依赖于文件扩展名。 总之,javax.imageio.iioexception: unsupported image type异常通常是由不支持或不识别的图像类型引起的。通过检查图片格式、文件内容和文件扩展名等方面的问题,可以解决该异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值