读取jp2 但是无法读取dpi

master
zhanghai 2 years ago
parent d2ae98ceab
commit af4d2f6e28

@ -63,6 +63,39 @@
<artifactId>gson</artifactId>
<version>2.10</version>
</dependency>
<dependency>
<groupId>com.github.jai-imageio</groupId>
<artifactId>jai-imageio-jpeg2000</artifactId>
<version>1.4.0</version>
</dependency>
<dependency>
<groupId>com.drewnoakes</groupId>
<artifactId>metadata-extractor</artifactId>
<version>2.18.0</version> <!-- Use the latest version -->
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-imaging</artifactId>
<version>1.0-alpha3</version> <!-- 替换为最新版本 -->
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.jai-imageio/jai-imageio-core -->
<dependency>
<groupId>com.github.jai-imageio</groupId>
<artifactId>jai-imageio-core</artifactId>
<version>1.4.0</version>
</dependency>
<dependency>
<groupId>com.github.jai-imageio</groupId>
<artifactId>jai-imageio-jpeg2000</artifactId>
<version>1.3.0</version>
</dependency>
</dependencies>

@ -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 {
}

@ -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();
// }
// }
}
Loading…
Cancel
Save