ImageUtil.java 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. package com.fdkankan.scene.util;
  2. import com.drew.imaging.ImageMetadataReader;
  3. import com.drew.metadata.Metadata;
  4. import com.drew.metadata.exif.ExifIFD0Directory;
  5. import javax.imageio.ImageIO;
  6. import java.awt.image.BufferedImage;
  7. import java.io.File;
  8. public class ImageUtil {
  9. public static boolean isFakePortrait(File file) throws Exception {
  10. // 1. 读像素尺寸
  11. BufferedImage img = ImageIO.read(file);
  12. int width = img.getWidth();
  13. int height = img.getHeight();
  14. // 2. 读 EXIF
  15. Metadata metadata = ImageMetadataReader.readMetadata(file);
  16. ExifIFD0Directory exif = metadata.getFirstDirectoryOfType(ExifIFD0Directory.class);
  17. boolean hasOrientation = false;
  18. if (exif != null && exif.containsTag(ExifIFD0Directory.TAG_ORIENTATION)) {
  19. hasOrientation = true;
  20. }
  21. // 3. 判定伪竖图
  22. return width > height && !hasOrientation;
  23. }
  24. public static void main(String[] args) throws Exception {
  25. System.out.println(isFakePortrait(new File("D:\\test-vips\\1.jpg")));
  26. }
  27. }