ImageIO.read() 返回 null


現象(問題描述)

今天線上出現了一個問題 BufferedImage prevImage = ImageIO.read(inputStream) 調試跟進去發現prevImage = null,可是輸入流是好好的,而且輸入流對應的圖片也能打開,但 ImageIO.read返回就是null

解決過程

后來在網上查找ImageIO用法知道,它可讀取的圖片類型是有限制的,可以讀取圖片的格式為:[BMP, bmp, jpg, JPG, wbmp, jpeg, png, PNG, JPEG, WBMP, GIF, gif]
可是文件后綴是jpg格式,按道理說應該支持啊,后來將文件下載下來放到notepad++上查看才發現前綴是:RIFF? WEBPVP8 這說明該文件的實際格式是webp格式.文件后綴名有時候不是實際的文件格式.

最后解決方案

因為我的業務只支持特定格式的文件,在ImageIo支持讀取的圖片格式范圍內,因此,當讀取到null時,直接提示用戶上傳圖片格式有誤即可.

備注:
ImageIO.getReaderFileSuffixes() 返回值:[jpg, bmp, gif, png, wbmp, jpeg]
ImageIO.getReaderFileSuffixes() 返回值:[JPG, jpg, bmp, BMP, gif, GIF, WBMP, png, PNG, wbmp, jpeg, JPEG]



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM