搜尋

首頁  >  問答  >  主體

sanselan - java技术读取图片的分辨率值,单位为dpi

最近项目需要,对上传的图片需要获取并判断它的dpi值是否合格。右键单击图片,查看其属性,点击详细信息,可以看到图片的长宽(像素),以及水平、垂直分辨率(dpi),当然这种方式仅限于jpg图片,其他格式的图片可以使用ps查看。

从网上查了很多资料,很多人对分辨率的理解就是图片的长宽,我不是专门研究图片的,所以概念上不作辩论,但图片属性和ps显示的分辨率值单位均为dpi,长宽是另外的。

我在网上找到个apache的开源类——Sanselan(sanselan-0.97-incubator.jar),用简单的java代码试了一下,可以准确地读到dpi值,用了一个ImageInfo类,我用的InputStream实例化的ImageInfo。可以用到Uedit上传图片时,用Uedit提供的图片输入流实例化ImageInfo类,对上传的合格图片,有的dpi值读到却是-1,就是失败了,希望有使用Sanselan经验的人指点迷津。

大家讲道理大家讲道理2804 天前1215

全部回覆(1)我來回復

  • PHP中文网

    PHP中文网2017-04-17 11:33:44

    關於自己提出的這個問題,已經被驗證。

    1. Ueditor富文本編輯器會對上傳的圖片進行修改,我所遇到的情況是,它把png圖片改為了jpg圖片,圖片的大小,長寬也都變了。但不是所有上傳的圖片都會被轉換,Ueditor有個閥值,把這個值調大了,圖片就不會變了。
    2. Sanselan這個開源jar包,現在改名為Imaging。查看官方文件說明可以發現,這個開源元件並不是支援所有的圖片,某些格式的圖片僅支援符合某種規範的,所以某些從網路下載的圖片讀到的dpi值為-1。這只能提示使用者使用ps軟體將圖片處理下或另存為一下,再上傳就可以讀取到dpi值了。

    回覆
    0
  • 取消回覆