Разница в разрешении изображения (ppi) между C # и Photoshop - PullRequest
3 голосов
/ 14 декабря 2011

Например, C # говорит, что выбранное изображение содержит 96 ppi, тогда как это же изображение в Photoshop содержит 72 ppi.

Почему есть разница?

Я склонен доверять Photoshop в этом случае, и как проверить разрешение изображения, если C # возвращает ложные результаты?

Нам нужно создать некий валидатор, который отклоняет все изображения с ppi! = 300.

Элемент управления должен поддерживать следующие форматы: jpg, jpeg, gif, png, bmp.

Код указан ниже:

Image i = Image.FromFile(FileName);

Console.Write(i.VerticalResolution);
Console.Write(i.HorizontalResolution);

Ответы [ 2 ]

7 голосов
/ 14 декабря 2011

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

Photoshop просто имеет заданное значение для DPI, которое он использует при переводе изображений для печати. Это значение сохраняется в файле PSD и может быть скопировано в метаданные JPEG, но если вы сохраните изображение в формате без метаданных DPI, информация не будет сохранена.

Обновление:

Причина, по которой ваш код получает другое значение, заключается в том, что C # извлекает свои значения VerticalResolution и HorizontalResolution из текущих настроек DPI на компьютере. DPI Photoshop предназначен для использования с печатью, поэтому он знает физические размеры, если вы хотите отправить изображение на принтер. Он имеет значение по умолчанию 72dpi, но вы можете изменить это. Однако значение на экране не имеет значения, поскольку экраны имеют дело только с пикселями.

1 голос
/ 14 декабря 2011

DPI означает количество точек на дюйм. Растровое изображение не имеет встроенного DPI, оно просто имеет размер, который представляет собой количество пикселей по горизонтали и количество пикселей по вертикали (ширина и высота). Изображение получает разрешение (в DPI) только тогда, когда вы говорите, сколько пикселей вы хотите сжать на каждый дюйм.

Так что, если у меня есть изображение шириной 100 пикселей и высотой 100 пикселей (100 пикселей × 100 пикселей), оно будет равно 100 DPI, если я его распечатаю (или преобразую в формат, который определяет размер печати), чтобы он соответствовал точно в один квадратный дюйм (1 "× 1"). Если я распечатаю его в квадрат размером два дюйма на два дюйма, будет значение 50 DPI, и т. Д.

...