图像EXIF信息的Java读取方法

电脑杂谈  发布时间:2020-04-19 20:31:35  来源:网络整理

exif信息_怎么读取exif信息_c 读取exif

本文中的示例描述了Java如何读取图片的EXIF信息. 与您分享以供参考. 具体分析如下:

首先介绍什么是EXIF,EXIF是可交换图像文件的缩写,这是专门为数码相机照片设置的格式. 此格式可用于记录数码照片的属性信息,例如照相机的品牌和型号,照片的拍摄时间,拍摄时设置的光圈大小,快门速度,ISO等. 此设备,例如照片打印机.

怎么读取exif信息_c 读取exif_exif信息

目前,支持EXIF信息的最常见图像格式是JPG. 许多图像工具可以直接显示图像的EXIF信息,包括一些知名的相册站点,现在还提供了用于显示照片EXIF信息的页面. 本文主要介绍如何用Java语言读取图像的EXIF信息,包括如何根据EXIF信息调整图像以适合用户浏览.

用于EXIF信息处理的最简单易用的Java包是Drew Noakes编写的元数据提取器. 该项目的最新版本是2.3.4,它支持EXIF 2.2版. 您可以直接从项目下载最新版本的项目,包括其源代码.

exif信息_怎么读取exif信息_c 读取exif

请注意,并非每个JPG图像文件都包含EXIF信息. 您可以在Windows资源管理器中单击图片以将其选中. 如果图片包含EXIF信息,它将显示在``属性''->``摘要''中.

ExifTester.java如下:

exif信息_c 读取exif_怎么读取exif信息

import java.io.File;
import java.util.Iterator;
import com.drew.imaging.jpeg.JpegMetadataReader;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
import com.drew.metadata.Tag;
import com.drew.metadata.exif.ExifDirectory;
/**
 * 测试用于读取图片的EXIF信息
 * @author Winter Lau
 */
public class ExifTester {
   public static void main(String[] args) throws Exception {
     File jpegFile = new File("C:/1.JPG");
     Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);
     Directory exif = metadata.getDirectory(ExifDirectory.class);
     Iterator tags = exif.getTagIterator();
     while (tags.hasNext()) {
       Tag tag = (Tag)tags.next();
       System.out.println(tag);
     }
   }
}

运行结果:

exif信息_怎么读取exif信息_c 读取exif

[Exif] Make - OLYMPUS OPTICAL CO.,LTD
[Exif] Model - u10D,S300D,u300D
[Exif] Orientation - Top, left side (Horizontal / normal)
[Exif] X Resolution - 72 dots per inch
[Exif] Y Resolution - 72 dots per inch
[Exif] Resolution Unit - Inch
[Exif] Software - 22-1012            
[Exif] Date/Time - 2005:04:14 13:47:10
[Exif] YCbCr Positioning - Datum point
[Exif] Exposure Time - 0.01 sec
[Exif] F-Number - F5.2
[Exif] Exposure Program - Program creative (slow program)
[Exif] ISO Speed Ratings - 80
[Exif] Exif Version - 2.20
[Exif] Date/Time Original - 2005:04:14 13:47:10
[Exif] Date/Time Digitized - 2005:04:14 13:47:10
[Exif] Components Configuration - YCbCr
[Exif] Exposure Bias Value - 0 EV
[Exif] Max Aperture Value - F3.1
[Exif] Metering Mode - Multi-segment
[Exif] Light Source - Unknown
[Exif] Flash - Flash did not fire, auto
[Exif] Focal Length - 17.4 mm
[Exif] User Comment - 
[Exif] FlashPix Version - 1.00
[Exif] Color Space - sRGB
[Exif] Exif Image Width - 1024 pixels
[Exif] Exif Image Height - 768 pixels
[Exif] File Source - Digital Still Camera (DSC)
[Exif] Windows XP Title - 风景
[Exif] Windows XP Author - 一路风尘
[Exif] Windows XP Keywords - 你是我的唯一
[Exif] Windows XP Subject - 我的第一张
[Exif] Custom Rendered - Normal process
[Exif] Exposure Mode - Auto exposure
[Exif] White Balance - Auto white balance
[Exif] Digital Zoom Ratio - 1
[Exif] Scene Capture Type - Landscape
[Exif] Gain Control - None
[Exif] Contrast - None
[Exif] Saturation - None
[Exif] Sharpness - None
[Exif] Unknown tag (0xa5) - 80 114 105 110 116 73 77 0 480 2 -10...
[Exif] Compression - JPEG (old-style)
[Exif] Thumbnail Offset - 2022 bytes
[Exif] Thumbnail Length - 5864 bytes
[Exif] Thumbnail Data - [5864 bytes of thumbnail data]

仅阅读某些信息:

package test;
import java.io.File;
import java.util.Iterator;
import com.drew.imaging.jpeg.JpegMetadataReader;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
import com.drew.metadata.Tag;
import com.drew.metadata.exif.ExifDirectory;
/**
 * 测试用于读取图片的EXIF信息
 * @author Winter Lau
 */
public class PicExif {
   public static void main(String[] args) throws Exception {
     File jpegFile = new File(
             "C:/1.JPG");
     Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);
     Directory exif = metadata.getDirectory(ExifDirectory.class);
     Iterator tags = exif.getTagIterator();
     if(exif.containsTag(ExifDirectory.TAG_WIN_AUTHOR)){
       System.out.println("Pic author is "+exif.getDescription(ExifDirectory.TAG_WIN_AUTHOR));
     }
     if(exif.containsTag(ExifDirectory.TAG_WIN_TITLE)){
      System.out.println("Pic title is "+exif.getDescription(ExifDirectory.TAG_WIN_TITLE));  
     }
     if(exif.containsTag(ExifDirectory.TAG_WIN_KEYWORDS)){
    System.out.println("Pic keyword is "+exif.getDescription(ExifDirectory.TAG_WIN_KEYWORDS));
     }
   }
}

我希望本文对大家的Java编程有所帮助.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-181581-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...