package com.fdkankan.scene.util; import com.drew.imaging.ImageMetadataReader; import com.drew.metadata.Metadata; import com.drew.metadata.exif.ExifIFD0Directory; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; public class ImageUtil { public static boolean isFakePortrait(File file) throws Exception { // 1. 读像素尺寸 BufferedImage img = ImageIO.read(file); int width = img.getWidth(); int height = img.getHeight(); // 2. 读 EXIF Metadata metadata = ImageMetadataReader.readMetadata(file); ExifIFD0Directory exif = metadata.getFirstDirectoryOfType(ExifIFD0Directory.class); boolean hasOrientation = false; if (exif != null && exif.containsTag(ExifIFD0Directory.TAG_ORIENTATION)) { hasOrientation = true; } // 3. 判定伪竖图 return width > height && !hasOrientation; } public static void main(String[] args) throws Exception { System.out.println(isFakePortrait(new File("D:\\test-vips\\1.jpg"))); } }