JAVA?ImageIO.read方法報(bào)錯(cuò)/無效問題及解決
JAVA ImageIO.read方法報(bào)錯(cuò)/無效
最近開始學(xué)習(xí)JAVA,使用到j(luò)avax.imageio包里的read方法,不論我怎么寫,IDEA一直報(bào)錯(cuò)。
如圖
其實(shí)這個(gè)問題很容易解決,但是JAVA初學(xué)者往往不能理解——只需要用try/catch吧需要處理的代碼包圍就可以了。
try { BufferedImage bi = ImageIO.read(file); } catch (IOException e) { e.printStackTrace(); }
但是這樣bi就變成了一個(gè)局部變量,這樣我們就沒法使用了,那該怎么處理呢?
解決
其實(shí)這個(gè)問題的解決方法也很明了,但是JAVA初學(xué)者可能無法理解——只要把需要的語句都添加到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字節(jié) } } compressImg(width,height,data,6); } catch (IOException e) { e.printStackTrace(); }
但是需要注意的一點(diǎn)是,read的file路徑是不能有中文的,java文件可能也不能放在含中文的路徑中。
否則的話會(huì)catch到如下錯(cuò)誤:
javax.imageio.IIOException: Can’t read input file!
at javax.imageio.ImageIO.read(Unknown Source)
at test.main(test.java:22)
如果你可以使用JAVA的一些文件方法來對(duì)文件進(jìn)行操作,但是不能使用ImageIO.read()的話,你就應(yīng)該查看自己的文件路徑是否含有中文或其他特殊字符了。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
spring定時(shí)器@Scheduled異步調(diào)用方式
在Spring Boot中,@Schedule默認(rèn)使用單線程執(zhí)行定時(shí)任務(wù),多個(gè)定時(shí)器會(huì)按順序執(zhí)行,為實(shí)現(xiàn)異步執(zhí)行,可以通過自定義線程池或?qū)崿F(xiàn)SchedulingConfigurer接口,使用自定義線程池可以保證多個(gè)定時(shí)器并發(fā)執(zhí)行2024-11-11java多態(tài)性中的Overload和Override區(qū)別詳解
這篇文章主要介紹了java多態(tài)性中的Overload和Override區(qū)別詳解,重寫(Overriding)是父類與子類之間多態(tài)性的一種表現(xiàn),而重載(Overloading)是一個(gè)類中多態(tài)性的一種表現(xiàn),需要的朋友可以參考下2023-07-07JavaEE的進(jìn)程,線程和創(chuàng)建線程的5種方式詳解
這篇文章主要為大家詳細(xì)介紹了JavaEE的進(jìn)程,線程和創(chuàng)建線程的5種方式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03詳解java操作Redis數(shù)據(jù)庫的redis工具(RedisUtil,jedis工具JedisUtil,JedisPoo
這篇文章主要介紹了java操作Redis數(shù)據(jù)庫的redis工具,包括RedisUtil,jedis工具JedisUtil,JedisPoolUtil工具,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-08-08java 在Jetty9中使用HttpSessionListener和Filter
這篇文章主要介紹了java 在Jetty9中使用HttpSessionListener和Filter的相關(guān)資料,需要的朋友可以參考下2017-06-06Java中的springboot監(jiān)聽事件和處理事件詳解
這篇文章主要介紹了Java中的springboot監(jiān)聽事件和處理事件,這個(gè)示例展示了如何在Spring Boot應(yīng)用中定義自定義事件、發(fā)布事件以及監(jiān)聽事件,需要的朋友可以參考下2024-07-07