Размер изображения с учетом (или нет) разрешения h / v.

#c# #image #resolution

#c# #изображение #разрешение

Вопрос:

У меня есть два изображения:

 Name   Type  Width  Height  HRes  VRes  
img01  GIF   256    256     384   96  
img02  TIFF  1728   1147    200   100
  

Внутренний просмотрщик Windows показывает их с использованием разных шаблонов:

  • img01 отображается как изображение размером 256×256 (квадратное)
  • img02 отображается в виде вертикального изображения (несмотря на ширину> высоту), и формат изображения правильный

После увиденного поведения img02 я подумал, что отображаемый размер задается:

 Display_Width  = max(HRes,VRes) * Width / HRes
Display_Height = max(HRes,VRes) * Height / VRes
  

Но это не подходит для img01, который отображается как 256×256!!
Если я использую класс Image для загрузки этих изображений, разрешение не учитывается, поэтому img02 отображается горизонтально и искажается в соответствии с правильным форматом.
Если Windows internal Viewer показывает их правильно, я думаю, должно быть какое-то свойство, чтобы понять, следует ли учитывать разрешение или нет.
С классом Image у меня есть свойства Flags и PropertyItems, но я действительно не понимаю, являются ли они теми, на которые я должен смотреть.

Можете ли вы научить меня правильному методу отображения изображений (с использованием класса Image) без искажений?
Спасибо

Ответ №1:

Соотношение сторон в файлах GIF очень необычно, поскольку GIF — это формат, используемый для хранения графики, предназначенной для отображения на экранах компьютеров. На самом деле, файлы GIF87a вообще не имеют соотношения сторон, а GIF89a хранят не фактическое соотношение сторон, а приблизительное.

С другой стороны, файлы TIFF по большей части используются графическими дизайнерами, фотографами и издателями, поэтому концепция соотношения сторон в пикселях является основной для формата, поскольку она позволяет этим файлам перемещаться между различными средами отображения.

Я предполагаю, что большинство декодеров GIF игнорируют соотношение сторон в формате GIF89a. Я думаю, вы должны сделать то же самое.

Комментарии:

1. Спасибо, Мигель, 1 за ваш ответ, потому что это звучит разумно. Я хотел бы получить другие ответы, чтобы понять, существует ли всегда действительный метод, прежде чем начинать различать по типу файла. Я надеюсь, что смогу найти некоторый набор битов или нет внутри свойств изображения…

2. Вы проверили поле соотношения сторон в пикселях в своем GIF-изображении? Для всех изображений, которые я проверил, установлено значение 0, что означает 1: 1.

3. Мне было интересно узнать об изображении GIF, а не о вашем классе изображений. Имеет ли он соотношение сторон в пикселях? Откуда вы взяли цифры 384/96 HRes / VRes, если не из соотношения сторон?

4. Из класса Image: он имеет как размер, так и разрешение (по горизонтали и вертикали). Те же данные приведены на вкладке свойств проводника…