«Я хочу изменить DPI с помощью Imagemagick без изменения фактического размера байта данных изображения».
Это абсолютно невозможно!
Так как:
more "Dots per Inch"
<==> more pixels per area
<==> more total pixels per image
<==> more total bytes per image
Также вы не понимаете, что такое DPI в реальности:
- Это абсолютно абстрактное значение, которое приобретает практическую ценность только в контексте знания также абсолютного размера распечатки или рендеринга на экране или мониторе:
- Вы можете «печать» тот же самый 72x72 пикселей изображения на широкой площади 1 дюйм: распечатка будет иметь разрешение
72dpi
- Вы также можете «напечатать» его на квадрате шириной 1/4 дюйма: тогда распечатка будет иметь разрешение
288dpi
точек на дюйм .
- (Примечание: если вы «напечатаете» его с
288dpi
на дюйм на 1-дюймовом квадрате, это уже не то же самое изображение: оно будет подвергнуто некоторой экстраполяции через драйвер принтера или какой-либо другой механизм фильтрации, и вместо этого оно станет изображением размером 288x288 пикселей изображения 72x72 пикселей ...)
- Обе распечатки будут иметь одинаковую информацию об изображении - изображение с разрешением 288 dpi не будет внезапно иметь больше.
Если вы хотите напечатать оригинальное изображение 72x72 пикселей в виде квадрата шириной 1 дюйм, но с 288dpi
на дюйм , вам придется изменить масштаб изображения (в этом случае его масштабировать). Для каждого 1 пикселя в оригинале вам понадобится 4 пикселя нового увеличенного изображения. Теперь существуют разные алгоритмы, которые можно использовать для вычисления значений цвета, которые должны иметь эти 4 пикселя (из них 3 новых пикселя):
- вы могли бы дать им так же, как исходный пиксель (который является очень "сырым" алгоритм,
- или вы можете сделать некоторое усреднение значения цвета исходного пикселя со значениями цвета соседних пикселей.
В любом случае вы создаете увеличенное изображение, состоящее из 288 строк пикселей, каждая из которых имеет высоту 288 пикселей (288x288 пикселей).
Что Gimp делает для вас, когда вы проходите через «Picture -> Printing Size»: это упрощает процесс перерасчета требуемых изменений в абсолютных размерах пикселей, делая его более удобным для пользователя. Для этого ...
- ... сначала он спрашивает о DPI, потому что данный принтер не может произвольно изменить разрешение печати (некоторые могут предлагать не одно, а, возможно, даже 2 или 3 разных разрешения). Таким образом, он спрашивает вас, в каком разрешении вы хотите распечатать. Это первая информация.
- ... затем также запрашивается вторая информация: в каком размере (в
cm
, mm
или inch
) распечатка должна появиться на бумаге.
В соответствии с этими двумя фрагментами информации Gimp затем вычисляет общее количество пикселей, которое он должен использовать (экстраполировать из исходного числа пикселей), чтобы заполнить запрошенное пространство с запрошенным разрешением.
Однако увеличение растрового изображения за счет увеличения количества пикселей не добавляет к нему реальной информации, а только добавляет к нему «качество», которое является вымышленным. Человеческому глазу может показаться приятнее, если ваш алгоритм масштабирования будет «хорошим». И это будет выглядеть ужасно, если вы просто удвоите, утроите или увеличите в четыре раза существующие пиксели, как это делают некоторые простые алгоритмы.
Для растровых изображений,
настройка DPI имеет значение только в контексте печати или отображения . Поскольку принтеры или мониторы дали, фиксированные разрешения. Поэтому только информация ...
- ... драйвер принтера или
- ... приложение для обработки изображений, которое поддерживает печать
надо знать.
И документация ImageMagick полностью согласна со мной:
-density width
-density widthxheight
Установите горизонтальное и вертикальное разрешение изображения для отображения на устройствах.
Для векторных изображений или форматов файлов
(например, PDF или PostScript), однако, настройка DPI чрезвычайно важна в контексте их растеризации . Более высокое DPI будет передавать больше информации об изображении в растровый формат и, следовательно, сохранять больше деталей с реальным оригинальным качеством. При преобразовании векторного изображения заданного размера в mm
, cm
или inch
в растр с более высоким DPI, это непосредственно приведет к увеличению общего количества пикселей в изображении.
Кроме того, ImageMagick не поддерживает «печать» как таковую. Вместо этого только ImageMagick ...
- ... конвертирует файлы из данного растрового формата в другие растровые форматы;
- ... или уменьшает или увеличивает растровые изображения;
- ... или изменяет значения цвета в соответствии с определенным алгоритмом;
- ... или обрезает изображения, накладывает их, инвертирует, отражает их;
- ...и что "нет....
... но для печати манипулируемых изображений вам нужно использовать другую программу.
Некоторые форматы изображений (TIFF, PNG, ...) поддерживают внутреннее хранение настроек DPI в своих метаданных.
Но это не более чем атрибут «подсказка», который не изменяет базовое растровое изображение. Вот причина, почему вы сделали это открытие:
«Когда я проверяю файл, он остается прежним».
Этот «совет» может быть автоматически оценен драйверами принтера или программами создания страниц, такими как LaTeX. В отсутствие таких «подсказок» для DPI (или если они каким-то образом не представляют себя так, как ожидает от них LaTeX), LaTeX все же должен иметь возможность отображать любое изображение на странице так, как этого ожидают. чтобы - ему нужен только более явный код LaTeX вокруг изображения!
Некоторые другие форматы изображений (JPEG (?), BMP, ...) даже не поддерживают хранение подсказок DPI для своих внутренних метаданных.
Таким образом, Gimp поддерживает только то, что вы видите, что он делает с «Picture -> Printing Size», потому что он хочет напечатать изображение. С ImageMagick вы не можете печатать.
Продолжайте делать то, что вы хотите делать с Gimp, когда вы печатаете. Это не имеет смысла с ImageMagick.
Смотрите также этот дополнительный фрагмент документации по IM, который объясняет одну и ту же тему разными словами.
Итак, что остается, это:
- Если вы «манипулируете» своим изображением с помощью Gimp, а затем вставляете результат в LaTeX, страница выглядит так, как вы ожидаете.
- Если вы «манипулируете» своим изображением с помощью ImageMagick, а затем вставляете результат в LaTeX, страница выглядит не так, как вы ожидаете.
Пожалуйста, предоставьте следующую информацию для решения вышеуказанной проблемы:
- точная версия вашей установки ImageMagick (полный вывод команды configure
convert -version
и convert -list configure
);
- (ссылка на) оригинальный образец изображения;
- (ссылка на) то же изображение, управляемое Gimp;
- (ссылка на) то же изображение, управляемое ImageMagick.
Таким образом, мы можем помочь решить проблему.
Но обратите внимание: это проблема, отличная от той, которая задается вашей текущей темой / заголовком: «Я хочу изменить DPI с помощью Imagemagick без изменения фактического размера байта данных изображения»
Обновить
Поскольку некоторым читателям все еще не ясно, что я отметил выше, вот еще одна попытка ...
Все, что отмечено как «Разрешение» или «Плотность» внутри файла изображения, является атрибутом метаданных. Он не влияет на количество реальных пикселей, описываемых файлом, и совершенно не имеет значения в этом отношении. Это просто подсказка, которой может или не может следовать устройство печати или рендеринга или приложение при печати, рендеринге или отображении изображения.
Для этой цели в файле изображения хранится всего несколько цифр. Эти числа показывают устройства вывода, такие как принтеры, и показывают, сколько точек (или пикселей) на дюйм должно отображаться на изображении. Для векторных форматов, таких как PostScript, PDF, MWF и SVG, указывается масштаб в пикселях для отрисовки любых реальных координат, используемых изображением.
Одним из примеров, в котором значение разрешения, отмеченное ImageMagick внутри метаданных изображения, НЕ учитывается приложением, является Adobe Photoshop. Photoshop хранит подсказки о желаемом разрешении печати или дисплея в собственном профиле с именем 8bim. ImageMagick не касается этого профиля, даже когда его просят записать изменение разрешения в метаданные файла изображения. Фотошоп, с другой стороны, будет игнорировать все подсказки разрешения, сохраненные ImageMagick в стандартном поле метаданных, которое определено для этой цели, как только оно увидит свой собственный профиль 8bim.
ФП должен был выбрать заголовок:
- «Я хочу изменить DPI (подсказку о разрешении метаданных) с помощью ImageMagick без изменения фактического количества пикселей в изображении»
во избежание недоразумений ...