From af4d2f6e28f5d65d025777570b5032380dfae7c6 Mon Sep 17 00:00:00 2001
From: zhanghai <120228220@qq.com>
Date: Thu, 16 Nov 2023 10:43:55 +0800
Subject: [PATCH] =?UTF-8?q?=E8=AF=BB=E5=8F=96jp2=20=E4=BD=86=E6=98=AF?=
=?UTF-8?q?=E6=97=A0=E6=B3=95=E8=AF=BB=E5=8F=96dpi?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 33 +++++++++++++++
src/test/java/Jpm2.java | 20 +++++++++
src/test/java/JpmTest.java | 87 ++++++++++++++++++++++++++++++++++++++
3 files changed, 140 insertions(+)
create mode 100644 src/test/java/Jpm2.java
create mode 100644 src/test/java/JpmTest.java
diff --git a/pom.xml b/pom.xml
index dcad3a7..7bbfff3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -63,6 +63,39 @@
gson
2.10
+
+ com.github.jai-imageio
+ jai-imageio-jpeg2000
+ 1.4.0
+
+
+
+ com.drewnoakes
+ metadata-extractor
+ 2.18.0
+
+
+
+ org.apache.commons
+ commons-imaging
+ 1.0-alpha3
+
+
+
+
+ com.github.jai-imageio
+ jai-imageio-core
+ 1.4.0
+
+
+
+ com.github.jai-imageio
+ jai-imageio-jpeg2000
+ 1.3.0
+
+
+
+
diff --git a/src/test/java/Jpm2.java b/src/test/java/Jpm2.java
new file mode 100644
index 0000000..d2b27b5
--- /dev/null
+++ b/src/test/java/Jpm2.java
@@ -0,0 +1,20 @@
+import com.github.jaiimageio.jpeg2000.impl.J2KImageReader;
+import com.github.jaiimageio.jpeg2000.impl.J2KImageReaderSpi;
+import org.apache.commons.imaging.ImageInfo;
+import org.apache.commons.imaging.ImageReadException;
+import org.apache.commons.imaging.ImageWriteException;
+import org.apache.commons.imaging.Imaging;
+import org.apache.commons.imaging.common.ImageMetadata;
+import org.apache.commons.imaging.common.RationalNumber;
+
+import javax.imageio.ImageIO;
+import javax.imageio.ImageReader;
+import javax.imageio.metadata.IIOMetadata;
+import javax.imageio.stream.ImageInputStream;
+import java.io.File;
+import java.io.IOException;
+
+public class Jpm2 {
+
+
+}
diff --git a/src/test/java/JpmTest.java b/src/test/java/JpmTest.java
new file mode 100644
index 0000000..39d45a0
--- /dev/null
+++ b/src/test/java/JpmTest.java
@@ -0,0 +1,87 @@
+import com.drew.imaging.ImageMetadataReader;
+import com.drew.imaging.ImageProcessingException;
+import com.drew.metadata.Directory;
+import com.drew.metadata.Metadata;
+import com.drew.metadata.Tag;
+import com.drew.metadata.exif.ExifSubIFDDirectory;
+
+import java.awt.image.BufferedImage;
+import java.io.File;
+import javax.imageio.ImageIO;
+import javax.imageio.ImageReader;
+import javax.imageio.stream.ImageInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.util.Date;
+
+public class JpmTest {
+
+ public void viewExif(String filePath) throws ImageProcessingException, IOException {
+ File jpegFile = new File(filePath);
+ Metadata metadata = ImageMetadataReader.readMetadata(jpegFile);
+ // 打印所有Tag
+ for (Directory directory : metadata.getDirectories()) {
+ for (Tag tag : directory.getTags()) {
+ System.out.println(tag);
+ }
+ }
+ // obtain the Exif directory
+ ExifSubIFDDirectory directory = metadata.getFirstDirectoryOfType(ExifSubIFDDirectory.class);
+
+ // 查询特定Tag:拍摄日期(OS X上叫内容创建时间)
+ Date date = directory.getDate(ExifSubIFDDirectory.TAG_DATETIME_ORIGINAL);
+ }
+ public static void main(String[] args) throws ImageProcessingException, IOException {
+// File file = new File("C:\\Users\\zhanghai\\Documents\\WeChat Files\\wxid_wexo4ubjorso22\\FileStorage\\File\\2023-11\\JP2/16-35数转模 - 0001.jp2");
+// ImageInfo imageInfo = Imaging.getImageInfo(file);
+// int height = imageInfo.getHeight();
+// int width = imageInfo.getWidth();
+// int physicalHeightDpi = imageInfo.getPhysicalHeightDpi();
+
+
+ String filePath = "C:\\Users\\zhanghai\\Documents\\WeChat Files\\wxid_wexo4ubjorso22\\FileStorage\\File\\2023-11\\JP2/16-35数转模 - 0001.jp2"; // 替换成你的 JP2 图像文件路径
+
+ try {
+ // 读取 JPEG 2000 图像文件
+ File inputFile = new File(filePath);
+ BufferedImage image = ImageIO.read(inputFile);
+// ImageInfo imageInfo = Imaging.getImageInfo(inputFile);
+ int height = image.getHeight();
+ int width = image.getWidth();
+// int physicalHeightDpi = image.getPhysicalHeightDpi();
+ System.out.println(height);
+ System.out.println(width);
+
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ new JpmTest().viewExif(filePath);
+ }
+
+// public static void main3(String[] args) {
+//
+// String filePath = "C:\\Users\\zhanghai\\Documents\\WeChat Files\\wxid_wexo4ubjorso22\\FileStorage\\File\\2023-11\\JP2/16-35数转模 - 0001.jp2"; // 替换成你的 JP2 图像文件路径
+// try {
+// File inputFile = new File(filePath);
+//
+// Metadata metadata = ImageMetadataReader.readMetadata(inputFile);
+// ExifIFD0Directory exifIFD0Directory = metadata.getFirstDirectoryOfType(ExifIFD0Directory.class);
+//
+// if (exifIFD0Directory != null) {
+// // Get X and Y DPI values
+// int xDpi = exifIFD0Directory.getInt(ExifIFD0Directory.TAG_X_RESOLUTION);
+// int yDpi = exifIFD0Directory.getInt(ExifIFD0Directory.TAG_Y_RESOLUTION);
+//
+// System.out.println("X DPI: " + xDpi);
+// System.out.println("Y DPI: " + yDpi);
+// } else {
+// System.out.println("DPI information not found in the metadata.");
+// }
+//
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// }
+}