Определите файлы изображений, которые являются ландшафтомJAVA

Программисты JAVA общаются здесь
Anonymous
Определите файлы изображений, которые являются ландшафтом

Сообщение Anonymous »

У меня есть количество изображений, которые я снял в вертикальном портрете с моего мобильного телефона, а затем я сохранил изображения в диском диск через Spring Boot Multipart.

в папке изображений. Некоторые портретные изображения сохраняются как ландшафт. Я хочу идентифицировать эти изображения. />
Примечание:

Некоторые изображения на самом деле являются ландшафтом (не нужно их идентифицировать) < /p>
Я пытался использовать ориентацию и Exif, как исследован в Интернете.

Я смог найти ландшафтные изображения, но реальные изображения ландшафта также были частью этого (как и ожидалось).public static void fetchLandscapePhotos(){
File folder = new File("MyImagePath"); // change this

if (!folder.exists() || !folder.isDirectory()) {
System.err.println("Folder not found: " + folder.getAbsolutePath());
return;
}

for (File imageFile : folder.listFiles()) {
if (!imageFile.isFile()) continue;

try {
BufferedImage img = ImageIO.read(imageFile);
if (img == null) {
System.out.println("Skipping unreadable image: " + imageFile.getName());
continue;
}

int width = img.getWidth();
int height = img.getHeight();
boolean rawLandscape = width > height;

Integer orientation = null;
try {
Metadata metadata = ImageMetadataReader.readMetadata(imageFile);
ExifIFD0Directory exifDir = metadata.getFirstDirectoryOfType(ExifIFD0Directory.class);

if (exifDir != null && exifDir.containsTag(ExifIFD0Directory.TAG_ORIENTATION)) {
orientation = exifDir.getInt(ExifIFD0Directory.TAG_ORIENTATION);
}
} catch (Exception e) {
System.out.println("No EXIF for: " + imageFile.getName() + " (" + e.getMessage() + ")");
}

boolean exifPortrait = orientation != null && (orientation == 6 || orientation == 8);

if (rawLandscape && exifPortrait) {
System.out.printf("❗ %s: RAW=LANDSCAPE but EXIF indicates PORTRAIT (orientation=%d)%n",
imageFile.getName(), orientation);
} else {
System.out.printf("✅ %s: OK (raw: %s, orientation: %s)%n",
imageFile.getName(),
rawLandscape ? "LANDSCAPE" : "PORTRAIT",
orientation != null ? orientation.toString() : "none");
}

} catch (Exception ex) {
System.out.println("Error processing " + imageFile.getName() + ": " + ex.getMessage());
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/796 ... -landscape

Вернуться в «JAVA»