项目需要,对上传的图片需要获取并判断它的dpi值是否合格。右键单击图片,查看其属性,点击详细信息,可以看到图片的长宽(像素),以及水平、垂直分辨率(dpi),当然这种方式仅限于jpg图片,其他格式的图片可以使用ps查看。
从网上查了很多资料,很多人对分辨率的理解就是图片的长宽,我不是专门研究图片的,所以概念上不作辩论,但图片属性和ps显示的分辨率值单位均为dpi,长宽是另外的。
我在网上找到个apache的开源类——Sanselan(sanselan-0.97-incubator.jar),用简单的java代码试了一下,可以准确地读到dpi值,用了一个ImageInfo类,我用的InputStream实例化的ImageInfo。可以用到Uedit上传图片时,用Uedit提供的图片输入流实例化ImageInfo类,对上传的合格图片,有的dpi值读到却是-1,就是失败了,希望有使用Sanselan经验的人指点迷津。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
Ueditor富文本编辑器会对上传的图片进行修改,我所遇到的情况是,它把png图片改为了jpg图片,图片的大小,长宽也都变了。但不是所有上传的图片都会被转换,Ueditor有个阀值,把这个值调大了,图片就不会变了。
Sanselan这个开源jar包,现在改名为Imaging。查看官方文档说明可以发现,这个开源组件并不是支持所有的图片,某些格式的图片仅支持符合某种规范的,所以某些从网上下载的图片读到的dpi值为-1。这只能提示用户使用ps软件将图片处理下或另存为一下,再上传就可以读取到dpi值了。