Конвертировать TIFF в JPG, используя FFMPEG с тем же DPI

1202
Anuj

Мы используем 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. Если да, пожалуйста, помогите мне, так как я застрял здесь надолго.

3

1 ответ на вопрос

0
user8356

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

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

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

Похожие вопросы