Доброе время суток!
Я собираюсь приобрести один из ваших продуктов, а именно imaging for java. На данный момент использую Free Trials. Помогите мне, столкнулся с проблемой получения ISO характеристики фотографии. Использую следующий код:
Выдает 0, хотя TiffDataType с id=34855 присутствует и содержит значение 800, что соответствует ISO фотографии.
Помогите разобраться с этой проблемой, спасибо!
Проблема с получением значения ISO может быть связана с неправильным извлечением метаданных из TIFF-файла. Убедитесь, что вы используете корректные методы для доступа к метаданным. Вот пример кода, который может помочь вам получить значение ISO:
import com.aspose.imaging.Image;
import com.aspose.imaging.exif;
public class GetISOValue {
public static void main(String[] args) {
// Загрузите изображение
Image image = Image.load("path/to/your/image.tiff");
// Получите метаданные
ExifData exifData = image.getExifData();
if (exifData != null) {
// Получите значение ISO
TiffDataType isoValue = exifData.getTagValue(ExifProperties.PhotographicSensitivity);
System.out.println("ISO значение: " + isoValue.getValue());
} else {
System.out.println("Метаданные EXIF не найдены.");
}
}
}
Убедитесь, что вы правильно указываете путь к вашему TIFF-файлу. Если значение ISO по-прежнему равно 0, возможно, в самом файле отсутствует эта информация или она неправильно записана.
Если у вас есть дополнительные вопросы или нужна помощь, не стесняйтесь спрашивать!
Прошу прощения, я не указал код, который я использую.
JpegImage image = (JpegImage) Image.load(“test_3.jpg”);
JpegExifData jpegExifData = image.getExifData();
Добрый день, @noxius ,
Мы рассмотрим ваш запрос уже завтра и сразу поделимся результатами проверки. Для более высокой точности результатов, вы можете поделиться исходным файлом здесь или в приватном обсуждении на форуме.
Как можно загрузить фотографию без изменений? Я использую кнопку “загрузить”, но изображение сжимается. В любом случае фотография: test_3.jpg (269,9 КБ)
Попытался загрузить через архив 7z, при загрузке сообщили, что размер слишком большой (максимально разрешено 200 мегабайт), но я загружаю файл размером 27 метров, почему не проходит?
// Загрузите изображение
try (Image image = Image.load("test_3.jpg"))
{
// Получите метаданные
ExifData exifData = image.getExifData();
if (exifData != null) {
// Получите значение ISO (это значение соответсвует тегу 0x8833 - ISOSpeed)
long isoValue = exifData.getISOSpeed();
// Чтобы получить доступ ко всем тегами, получаем их список
TiffDataType[] properties = exifData.getProperties();
// Ищем нужный (тег 0x8827 called ISOSpeedRatings by EXIF 2.2, then PhotographicSensitivity by the EXIF 2.3 spec.)
Optional<TiffDataType> tag = Arrays.stream(properties)
.filter(it -> it.getTagId() == ExifProperties.PhotographicSensitivity)
.findFirst();
System.out.println("ISOSpeed значение: " + isoValue);
if (tag.isPresent())
{
int[] values = (int[]) tag.get().getValue();
System.out.println("PhotographicSensitivity значение: " + Arrays.toString(values));
}
} else {
System.out.println("Метаданные EXIF не найдены.");
}
}
Спасибо.
Да, я так и делаю. через получение массива я имею возможность добраться до необходимых мне данных.
Правильно ли я понимаю, что полагаться на именованные методы ( getFNumaber, getPhotographicSensitivity, getExposure… и так далее) лучше не стоит? И более надежно было бы получать массив TiffDataType[], и далее по идентификатору поля exif таблицы разбирать данные?
Именованные методы предназначены для упрощения получения нужных полей. Если какой-то конкретный метод не работает, то это баг. И мы обязательно его будем исправлять.
Если говорить конкретно про метод getPhotographicSensitivity, то он будет исправлен в следующей версии библиотеки.