java 提取图片与视频的元数据

代码

jar包:https://download.csdn.net/download/qq_40971752/10925501

Exif支持的格式有,这是github里的项目介绍,有兴趣可以看看https://github.com/drewnoakes/metadata-extractor

官网:https://drewnoakes.com/code/exif/

 这是ImageMetadataReader类里面的源码,只需要用这个类就能读取其他格式文件的元数据

 

import org.junit.Test;
import org.springframework.boot.test.context.SpringBootTest;

import com.drew.imaging.ImageProcessingException;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;

import com.drew.imaging.ImageMetadataReader;

@SpringBootTest
public class ExifTest {

	@Test
	public void test() throws ImageProcessingException, IOException {
		// File file = new
		// File("C:/Users/yunxun/Desktop/测试文档/format/66_635142_271cb2f6a8550e7.raw");
		// File file = new File("C:/Users/yunxun/Desktop/测试文档/format/1.bmp");
		// File file = new File("C:/Users/yunxun/Desktop/测试文档/format/1.gif");
		// File file = new File("C:/Users/yunxun/Desktop/测试文档/format/1.tif");
		// File file = new File("C:/Users/yunxun/Desktop/测试文档/format/1.png");
			File file = new File("C:/Users/yunxun/Desktop/测试文档/format/1.jpg");
        //File file = new
        //File("C:/Users/yunxun/Desktop/测试文档/format/chichen.mp4");
		//File file = new File("C:/Users/yunxun/Desktop/测试文档/format/D54A57D5BFA88B517F04776EB4122250.avi");
		// File file = new
		// File("C:/Users/yunxun/Desktop/测试文档/format/SampleVideo_320x240_30mb.3gp");
		// // 失败

		Metadata data = ImageMetadataReader.readMetadata(file);
		// Mp4MetadataReader.readMetadata(file);
		for (Directory di : data.getDirectories()) {
			for (com.drew.metadata.Tag tag : di.getTags()) {
				if (tag.getTagName().contains("Unknown")) {
					System.err.println("未知标签" + tag.getTagName());
				} else {
					System.out.println(tag.toString());
				}
			}
		}
	}
}

下面是读取出来的结果

[JPEG] Compression Type - Baseline
[JPEG] Data Precision - 8 bits
[JPEG] Image Height - 300 pixels
[JPEG] Image Width - 480 pixels
[JPEG] Number of Components - 3
[JPEG] Component 1 - Y component: Quantization table 0, Sampling factors 2 horiz/2 vert
[JPEG] Component 2 - Cb component: Quantization table 1, Sampling factors 1 horiz/1 vert
[JPEG] Component 3 - Cr component: Quantization table 1, Sampling factors 1 horiz/1 vert
[JFIF] Version - 1.1
[JFIF] Resolution Units - inch
[JFIF] X Resolution - 72 dots
[JFIF] Y Resolution - 72 dots
[JFIF] Thumbnail Width Pixels - 0
[JFIF] Thumbnail Height Pixels - 0
[Exif IFD0] Image Description - title
[Exif IFD0] Artist - 黑土
[Exif IFD0] Rating - 5
[Exif IFD0] Copyright - 黑土工作室
未知标签Unknown tag (0x4749)
[Exif IFD0] Windows XP Title - title
[Exif IFD0] Windows XP Comment - 开会
[Exif IFD0] Windows XP Author - 黑土
[Exif IFD0] Windows XP Keywords - 没得标记
[Exif IFD0] Windows XP Subject - 蓝色主题
[Exif IFD0] Padding - [1996 values]
[Exif SubIFD] Exposure Program - Manual control
[Exif SubIFD] ISO Speed Ratings - 2
[Exif SubIFD] Date/Time Original - 2019:01:14 16:38:44
[Exif SubIFD] Date/Time Digitized - 2019:01:14 16:38:44
[Exif SubIFD] Metering Mode - Average
[Exif SubIFD] White Balance - Daylight
[Exif SubIFD] Flash - Flash did not fire
[Exif SubIFD] Sub-Sec Time Original - 80
[Exif SubIFD] Sub-Sec Time Digitized - 80
[Exif SubIFD] Padding - [2060 values]
[XMP] XMP Value Count - 20
[Huffman] Number of Tables - 4 Huffman tables
[File Type] Detected File Type Name - JPEG
[File Type] Detected File Type Long Name - Joint Photographic Experts Group
[File Type] Detected MIME Type - image/jpeg
[File Type] Expected File Name Extension - jpg
[File] File Name - 1.jpg
[File] File Size - 39623 bytes
[File] File Modified Date - 星期一 一月 14 16:51:05 +08:00 2019

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
如果您想单独分离出文件的元数据,可以使用Java的一些开源库,例如Apache Tika或Metadata Extractor。这些库可以解析各种文件类型的元数据,如文档、图片、音频、视频等。下面是使用Apache Tika来提取文件元数据的示例代码: ```java import org.apache.tika.metadata.Metadata; import org.apache.tika.parser.AutoDetectParser; import org.apache.tika.parser.ParseContext; import org.apache.tika.parser.Parser; import org.apache.tika.sax.BodyContentHandler; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; public class FileMetadataExtractor { public static void main(String[] args) throws Exception { // 指定要解析的文件 File file = new File("example.pdf"); // 创建parser和handler对象 Parser parser = new AutoDetectParser(); BodyContentHandler handler = new BodyContentHandler(); Metadata metadata = new Metadata(); // 创建解析上下文对象,并解析文件 ParseContext context = new ParseContext(); try (InputStream stream = new FileInputStream(file)) { parser.parse(stream, handler, metadata, context); } // 打印文件元数据 System.out.println("文件名:" + file.getName()); System.out.println("文件大小:" + file.length() + " bytes"); System.out.println("文件类型:" + metadata.get("Content-Type")); System.out.println("创建者:" + metadata.get("Author")); System.out.println("创建日期:" + metadata.get("Creation-Date")); System.out.println("修改者:" + metadata.get("Last-Modified")); System.out.println("修改日期:" + metadata.get("Last-Save-Date")); } } ``` 在上面的示例中,我们使用Apache Tika解析了一个PDF文件的元数据,并将文件名、文件大小、文件类型、创建者、创建日期、修改者和修改日期等信息打印出来。您可以根据需要调整代码以适应不同类型的文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值