java上傳圖片獲取文件信息 校驗文件尺寸

 一開始我是用的是下面這種方法,測試了幾個圖片都沒有問題,然後隨便去網上下載了個圖片測試,竟然報了空指針,獲取不到高度和寬度,於是我右鍵查看圖片屬性,詳細信息竟然都是空的

這是一個jpg格式的圖片,然後我用WPS看圖打開他,WPS看圖顯示此圖片的詳細信息都有尺寸,還有圖片類型是webp類型。

InputStream murl = new URL(user1.getFileurl()).openStream();
BufferedImage sourceImg =ImageIO.read(murl);   
System.out.println(sourceImg.getWidth());   // 源圖寬度
System.out.println(sourceImg.getHeight());   // 源圖高度
if(Math.abs(sourceImg.getWidth()-sourceImg.getHeight())>30 || sourceImg.getWidth()>800 || sourceImg.getHeight()>800) {
    return ResponseBaseData.responseJsonToString(307, 14, "error", 1114445, null);
}

 

既然這種方法不好用,那就找第三方jar包。

依賴:

<dependency>
	<groupId>com.drewnoakes</groupId>
	<artifactId>metadata-extractor</artifactId>
	<version>2.11.0</version>
</dependency>

 

代碼實現:

Metadata metadata = ImageMetadataReader.readMetadata(new File(圖片路徑));
int width = 0;
int height = 0;
for (Directory directory : metadata.getDirectories()) {
    for (Tag tag : directory.getTags()) {
        //格式化輸出[directory.getName()] - tag.getTagName() = tag.getDescription()
        //System.out.format("[%s] - %s = %s\n",
        //directory.getName(), tag.getTagName(), tag.getDescription());
    	if(tag.getTagName().equals("Image Width")) {
    	    width = Integer.parseInt(tag.getDescription());
        }
        if(tag.getTagName().equals("Image Height")) {
    	    height = Integer.parseInt(tag.getDescription());
        }
    }

}

格式化輸出的結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章