2011-12-14 7 views
3

Например, C# говорит, что выбранное изображение содержит 96 точек на дюйм, тогда как то же изображение в Photoshop содержит 72 ppi.Разница в разрешении изображения (ppi) между C# и Photoshop

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

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

Нам нужно построить какое-то контроль валидатора, отвергающее все изображений с ИЦПОМ = 300.

управление должно поддерживать следующие форматы: JPG, JPEG, GIF, PNG, BMP.

код приведен ниже:

Image i = Image.FromFile(FileName); 

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

Интересно, как C# может «сказать» такую ​​вещь ... как насчет того, чтобы вы показали нам какой-то код? используете ли вы сторонний компонент? Whot? – Shai

+0

Как C# говорит вам? Покажите код, иначе я уверен, что этот вопрос будет закрыт. – spender

+0

Главное сообщение редактируется и теперь содержит соответствующий исходный код. –

ответ

7

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

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

Update:

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

+0

Правильно, однако DPI! = PPI. Хотя _dots на дюйм и _пиксели на дюйм_ используются взаимозаменяемо многими, это не одно и то же. –

+0

Несмотря на то, что экраны имеют свой собственный DPI, так как экраны имеют физический размер. Таким образом, приложение может позволить выбрать разрешение экрана в DPI, чтобы изображение масштабировалось, чтобы отобразить определенный размер, основанный на размере экрана. –

+0

DPI не соответствует непосредственно PPI, потому что принтер может помещать несколько точек для воспроизведения одного пикселя. В основном термин DPI относится к разрешению печатающего устройства, где PPI относится к разрешению самого изображения. –

1

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

Поэтому, если у меня есть изображение шириной 100 пикселей и высотой 100 пикселей (100 пикселей × 100 пикселей), оно будет 100 DPI, если я его распечатаю (или преобразую в формат, определяющий размер печати), чтобы он подходит ровно на один квадратный дюйм (1 "× 1"). Это будет 50 DPI, если я напечатаю его, чтобы поместиться в квадрат, который составляет два дюйма на два дюйма, & c.