3

Мы используем FFMPEG в нашем Java-приложении, и я пытаюсь преобразовать TIFF-файл в JPG, но необходимо сохранить тот же DPI, что и в оригинальном TIFF-файле.

Я новичок в FFMPEG и попытался следующие неудачные попытки достичь этого:

  1. ffmpeg -y -i test.tif test.jpg: успешно преобразован в jpg, но DPI уменьшен с 300 до 96. (Подтверждено нажатием правой кнопки мыши на изображении -> свойства -> вкладка сведений -> атрибуты разрешения по горизонтали и вертикали)
  2. ffmpeg -y -i test.tif -c:v copy test.jpg: преобразовано в jpg с разрешением 300 т / д, но фактический формат файла все еще tif. Кажется, что только расширение изменено на JPG.
  3. ffmpeg -y -i test.tif -pix_fmt <format> test.gif (пробовал все 3 поддерживаемых формата: yuvj420p, yuvj422p yuvj444p): преобразовано в jpg, но dpi изменено с 300 на 96.
  4. ffmpeg y -i test.tif -r 1 -q:v <range> test.jpg (пробовал различные диапазоны: от 1 до 10): та же проблема.

  5. Пробовал опции -q:v и -qscale , но он просто изменяет ширину и высоту изображения.

Наконец, я услышал об ImageMagick, и проблема решается с первой попытки с помощью следующей команды:

  1. magick convert "test.tif" "test.jpg": конвертируется в jpg, а dpi - 300.

Можно ли добиться того же, используя FFMPEG. Если да, пожалуйста, помогите мне, так как я застрял здесь надолго.

1 ответ1

0

Необходимо понять, что DPI не имеет ничего общего с данными на изображении. Это конструкция, основанная на возможностях вывода оборудования. Изображение имеет так много отдельных пикселей, для которых есть данные в файле. Измерение количества пикселей в дюйме имеет значение только при выводе на принтер или на дисплей устройства. Данные изображения сами по себе не имеют встроенного "размера" пикселей. Некоторые форматы файлов изображений поддерживают метаданные, которые могут включать в себя "DPI", но это по существу бессмысленно для самого изображения.

Информация о DPI, которую вы видите, может быть произвольно назначена программами, которые вы используете для отображения файлов изображений. Если ваша программа рисования говорит, что изображение имеет разрешение 300 DPI, это может не иметь ничего общего с данными в файле, которые могут не иметь тега DPI. Файлы TIFF могут содержать теги метаданных (поэтому формат "тегированный формат файла изображения"), например DPI, но это не имеет значения для данных изображения.

Эти концепции кажутся людям особенно трудными для понимания, но факт в том, что элемент изображения (пиксель) не имеет размера - только устройства вывода имеют измерения DPI. Я подозреваю, что ваше требование не менять DPI - это чья-то идея о требовании сохранения данных. Кстати, поскольку JPEG является схемой сжатия с потерями, применяемая степень сжатия намного важнее, чем некоторые произвольные метаданные DPI. Вы можете уничтожить эти изображения, сжав их в формате JPEG, сохранив метку DPI.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .