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字節(jié)
}
}
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()的話,你就應該查看自己的文件路徑是否含有中文或其他特殊字符了。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
springboot中@RequestParam和@PathVariable區(qū)別
本文主要介紹了springboot中@RequestParam和@PathVariable區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-07-07
Java中Stream的flatMap與map使用場景及區(qū)別詳解
這篇文章主要介紹了Java中Stream的flatMap與map使用場景及區(qū)別詳解,Stream 流式操作,一般用于操作集合即 List 一類的數(shù)據(jù)結構,簡單來說 Stream 的 map 使得其中的元素轉(zhuǎn)為另一種元素的映射(map)方法,需要的朋友可以參考下2024-01-01

