一个很好的开源类库metadata-extractor处理jpeg图片
来源:互联网 发布:rhino mac 授权码 编辑:程序博客网 时间:2024/06/11 04:42
由于工作关系最近一直在研究处理大图片的问题(大于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 = com.drew.imaging.jpeg.JpegMetadataReader.readMetadata(source);
JpegDirectory jd = (JpegDirectory)metadata.getDirectory(JpegDirectory.class);
System.out.println("------------" + jd.getImageHeight()); //图片的高
System.out.println("------------" + jd.getImageWidth()); //图片的宽
由于只是读取图片的头信息,所以无论多大的图片都能读取,而且速度很快.
例子:读取图片已知的所有信息.
Metadata metadata = com.drew.imaging.jpeg.JpegMetadataReader.readMetadata(source);
Iterator directories = metadata.getDirectoryIterator();
while (directories.hasNext()) {
Directory directory = (Directory)directories.next();
// iterate through tags and print to System.out
Iterator tags = directory.getTagIterator();
while (tags.hasNext()) {
Tag tag = (Tag)tags.next();
// use Tag.toString()
System.out.println(tag.toString());
}
}
大家有时间研究一下源码吧.没多少内容我只是用了其中的一个功能.
其它相关资源http://www.srcsky.com/kaiyuan/category/81?index=1&lang=8&show=hot头一回写博客,如果写的不好多多指教.
- 一个很好的开源类库metadata-extractor处理jpeg图片
- 开源图片详细信息提取metadata-extractor
- 图像处理1_开源图片详细信息提取metadata-extractor
- 图像处理3_使用 metadata-extractor 解析图片 exif 元数据信息
- 图像处理4_使用 metadata-extractor 修改图片名为拍摄时间
- Android中读取图片EXIF元数据之metadata-extractor的使用
- 使用 metadata-extractor 解析图片 exif 元数据信息
- Jpeg metadata
- Delphi2010使用TImage打开jpeg图片错误的处理
- JPEG系列一 JPEG图片的文件格式
- C#图片处理之:保存原始Exif到处理过的JPEG图片中
- 发现一个很好的图片占位工具网。placehold.it
- 介绍一个很好用的图片浏览插件iviewer
- 安卓里一个很好用的图片压缩方法
- 一个很好用的图片查看类:JTSImageViewController
- JAVA对JPEG图片进行处理
- JAVA对JPEG图片进行处理
- ASP JPEG图片处理高级使用方法
- ajax 去缓存
- java多态的列子
- DataList 中 HyperLink传递时多个参数怎么绑定
- GXT ProgressBar
- SQL的常用方法
- 一个很好的开源类库metadata-extractor处理jpeg图片
- Word中如何输入公式
- VIM操作指南
- 进度条的实现
- 高效率编辑器 VIM-操作篇,非常适合 VIM 新手
- asp弹窗口
- Web Service、WSDL、SOAP、HTTP的关系
- gridview xml
- OGRE 使用技巧总结