由于工作关系最近一直在研究处理大图片的问题(大于2M),刚开始用BufferedImage类来读:
BufferedImage image = ImageIO.read(File file);这个在读取小图片的时候没有问题但是在遇到起过1M(具体大小跟据JVM可占用的最大内存-Xmx有关)的大图片时就会抛出,OutOfMemoryException错误.在网上找了很多资料大多都是提高JVM最大内存,但是这样一来产生了一个问题.如果遇到了10M,100M,或1G的图片呢,总不能无限到加到JVM内存吧.
其实我只是想读取jpeg图片的长宽等参数来判断,如果超过尺寸则不许用户上传图片,其实可以不用把整个图片都读取进来,而是只读jpeg的头信息里面就有我想要的内容,言归正传这个时候我在网上找到了metadata-extractor类库,这个正是用来读图片(现在只支持jpeg格式)的小东西.
1.在工程中导入metadata-extractor-2.3.1.jar(可以到http://www.drewnoakes.com/code/exif/下载jar包及源码,还有文档)
2.开始使用...
例子:
File source="C://h.jpg";
Metadata metadata