«Я хочу изменить 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 точек на дюйм не будет внезапно иметь больше.
Если вы хотите напечатать исходное изображение размером 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 (полный вывод
convert -version
и convert -list configure
);
- (ссылка на) оригинальный образец изображения;
- (ссылка на) то же изображение, управляемое Gimp;
- (ссылка на) то же изображение, управляемое ImageMagick.
Таким образом, мы можем помочь решить проблему.
Но обратите внимание: это проблема, отличная от той, которая задается вашей текущей темой / заголовком: «Я хочу изменить DPI с помощью Imagemagick без изменения фактического размера байта данных изображения»
Обновить
Поскольку некоторым читателям все еще не ясно, что я отметил выше, вот еще одна попытка ...
Все, что отмечено как «Разрешение» или «Плотность» внутри файла изображения, является атрибутом метаданных . Он не влияет на количество реальных пикселей, описываемых файлом, и совершенно не имеет значения в этом отношении. Это просто подсказка, которой может или не может следовать устройство печати или рендеринга или приложение при печати, рендеринге или отображении изображения.
Для этого в файле изображения хранится всего несколько цифр. Эти числа показывают устройства вывода, такие как принтеры, и показывают, сколько точек (или пикселей) на дюйм должно отображаться на изображении. Для векторных форматов, таких как PostScript, PDF, MWF и SVG, указывается масштаб в пикселях для отрисовки любых реальных координат, используемых изображением.
Одним из примеров, в котором значение разрешения, отмеченное ImageMagick внутри метаданных изображения, НЕ учитывается приложением, является Adobe Photoshop. Photoshop хранит свои подсказки о желаемом разрешении печати или дисплея в собственном профиле с именем 8bim . ImageMagick не касается этого профиля, даже когда его просят записать изменение разрешения в метаданные файла изображения. Фотошоп, с другой стороны, будет игнорировать все подсказки разрешения, сохраненные ImageMagick в стандартном поле метаданных, которое определено для этой цели, как только оно увидит свой собственный профиль 8bim .
ФП должен был выбрать заголовок:
- «Я хочу изменить DPI (подсказку о разрешении метаданных) с помощью ImageMagick без изменения фактического количества пикселей в изображении»
во избежание недоразумений ...
^
иконку слева от его ответа), а не просто «принять» его, как только у вас будет достаточно личной репутации (я думаю, что вам нужно) +15) ...