搜索

首页  >  问答  >  正文

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经验的人指点迷津。

大家讲道理大家讲道理2769 天前1184

全部回复(1)我来回复

  • PHP中文网

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

    关于自己提出的这个问题,已经得到验证。

    1. Ueditor富文本编辑器会对上传的图片进行修改,我所遇到的情况是,它把png图片改为了jpg图片,图片的大小,长宽也都变了。但不是所有上传的图片都会被转换,Ueditor有个阀值,把这个值调大了,图片就不会变了。
    2. Sanselan这个开源jar包,现在改名为Imaging。查看官方文档说明可以发现,这个开源组件并不是支持所有的图片,某些格式的图片仅支持符合某种规范的,所以某些从网上下载的图片读到的dpi值为-1。这只能提示用户使用ps软件将图片处理下或另存为一下,再上传就可以读取到dpi值了。

    回复
    0
  • 取消回复