考虑(或不考虑)h / v分辨率的图像尺寸

时间:2011-10-11 00:32:31

标签: c# image resolution

我有两张图片:

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

Windows内部查看器使用不同的模式显示它们:

  • img01 显示为256x256图像(方形)
  • img02 显示为垂直图像(尽管宽度>高度)且图像格式正确

在看到 img02 行为后,我认为显示的尺寸由下式给出:

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

但这对 img01 并不好,显示为256x256 !!
如果我使用Image class加载这些图片,则不考虑分辨率,因此水平显示 img02 ,并且尊重格式正确。
如果Windows内部查看器正确显示它们,我认为应该有一些属性来理解是否应该考虑解决方案 使用Image class我有FlagsPropertyItems属性,但我真的不明白它们是否是我要看的那些。

你能教我正确的方法来显示图像(使用Image类)而不会失真吗? 感谢

1 个答案:

答案 0 :(得分:1)

GIF文件中的宽高比非常罕见,因为GIF是一种用于存储要在计算机屏幕上显示的图形的格式。实际上,GIF87a文件根本没有宽高比,而GIF89a不存储实际宽高比,而是近似值。

另一方面,TIFF文件大部分由图形设计师,摄影师和出版商使用,因此像素宽高比的概念是格式的核心,因为它允许这些文件在不同的显示媒体之间移动。

我的猜测是大多数GIF解码器忽略了GIF89a格式的宽高比。我想你也应该这样做。