в папке изображений. Некоторые портретные изображения сохраняются как ландшафт. Я хочу идентифицировать эти изображения. />
Примечание:
Некоторые изображения на самом деле являются ландшафтом (не нужно их идентифицировать) < /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("
imageFile.getName(), orientation);
} else {
System.out.printf("
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