JAVA ImageIO.read方法报错/无效问题及解决

 更新时间:2023年11月18日 10:31:59   作者:Charlesix59  
这篇文章主要介绍了JAVA ImageIO.read方法报错/无效问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

JAVA ImageIO.read方法报错/无效

最近开始学习JAVA,使用到javax.imageio包里的read方法,不论我怎么写,IDEA一直报错。

如图

其实这个问题很容易解决,但是JAVA初学者往往不能理解——只需要用try/catch吧需要处理的代码包围就可以了。

		try {
            BufferedImage bi = ImageIO.read(file);
        } catch (IOException e) {
            e.printStackTrace();
        }

但是这样bi就变成了一个局部变量,这样我们就没法使用了,那该怎么处理呢?

解决

其实这个问题的解决方法也很明了,但是JAVA初学者可能无法理解——只要把需要的语句都添加到try的语句块里面就可以了

try {
            BufferedImage bi = ImageIO.read(file);
            int width= bi.getWidth();
            int height= bi.getHeight();
            int[][] data =new int[width][height];
            for (int i = 0; i < width; i++) {
                for (int j = 0; j < height; j++) {
                    data[i][j] = bi.getRGB(i, j);//得到的是sRGB值,4字节
                }
            }
            compressImg(width,height,data,6);
        } catch (IOException e) {
            e.printStackTrace();
        }

但是需要注意的一点是,read的file路径是不能有中文的,java文件可能也不能放在含中文的路径中。

否则的话会catch到如下错误:

javax.imageio.IIOException: Can’t read input file!
at javax.imageio.ImageIO.read(Unknown Source)
at test.main(test.java:22)

如果你可以使用JAVA的一些文件方法来对文件进行操作,但是不能使用ImageIO.read()的话,你就应该查看自己的文件路径是否含有中文或其他特殊字符了。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java合并两个相同的List集合的四种方法解析

    Java合并两个相同的List集合的四种方法解析

    这篇文章主要给大家介绍了关于Java合并两个相同的List集合的四种方法,在Java编程中常需合并两个List,常用addAll()方法,简单高效,Java8起可用Stream的concat()方法,并发场景下,CopyOnWriteArrayList类保证线程安全,Collections.union()合并且去重,需要的朋友可以参考下
    2024-10-10
  • spring定时器@Scheduled异步调用方式

    spring定时器@Scheduled异步调用方式

    在Spring Boot中,@Schedule默认使用单线程执行定时任务,多个定时器会按顺序执行,为实现异步执行,可以通过自定义线程池或实现SchedulingConfigurer接口,使用自定义线程池可以保证多个定时器并发执行
    2024-11-11
  • java多态性中的Overload和Override区别详解

    java多态性中的Overload和Override区别详解

    这篇文章主要介绍了java多态性中的Overload和Override区别详解,重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多态性的一种表现,需要的朋友可以参考下
    2023-07-07
  • Spring AOP详解面向切面编程思想

    Spring AOP详解面向切面编程思想

    Spring是一个广泛应用的框架,SpringAOP则是Spring提供的一个标准易用的aop框架,依托Spring的IOC容器,提供了极强的AOP扩展增强能力,对项目开发提供了极大地便利
    2022-06-06
  • JavaEE的进程,线程和创建线程的5种方式详解

    JavaEE的进程,线程和创建线程的5种方式详解

    这篇文章主要为大家详细介绍了JavaEE的进程,线程和创建线程的5种方式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • 详解spring整合hibernate的方法

    详解spring整合hibernate的方法

    这篇文章主要介绍了spring整合hibernate的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • 详解java操作Redis数据库的redis工具(RedisUtil,jedis工具JedisUtil,JedisPoolUtil)

    详解java操作Redis数据库的redis工具(RedisUtil,jedis工具JedisUtil,JedisPoo

    这篇文章主要介绍了java操作Redis数据库的redis工具,包括RedisUtil,jedis工具JedisUtil,JedisPoolUtil工具,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2021-08-08
  • java 读写文件[多种方法]

    java 读写文件[多种方法]

    前两天用到读写文件的操作,上网搜了一些这方面的资料。很有用的。
    2008-11-11
  • java 在Jetty9中使用HttpSessionListener和Filter

    java 在Jetty9中使用HttpSessionListener和Filter

    这篇文章主要介绍了java 在Jetty9中使用HttpSessionListener和Filter的相关资料,需要的朋友可以参考下
    2017-06-06
  • Java中的springboot监听事件和处理事件详解

    Java中的springboot监听事件和处理事件详解

    这篇文章主要介绍了Java中的springboot监听事件和处理事件,这个示例展示了如何在Spring Boot应用中定义自定义事件、发布事件以及监听事件,需要的朋友可以参考下
    2024-07-07

最新评论