使用GDI + Bitmap类加载CCITT T.6

时间:2011-05-31 23:51:18

标签: c# bitmap gdi+

我遇到一个问题,C#中的Bitmap类没有正确加载CCITT T.6 Tiff文件,它会翻转它,所以高度是宽度,宽度是高度。

有没有人以前做过这些并且知道处理它们的正确方法?

编辑:

以下是代码:

    Bitmap B = new Bitmap(@"C:\test2.tif");
    Debug.WriteLine(B.Width); //returns 1728
    Debug.WriteLine(B.Height); //returns 1127

当我在.net图片框中显示它(SizeMode设置为Normal)时,它也显示不正确(拉伸)。但是,如果我用Windows Photo Viewer打开它,它会正确显示。

这些是tiff文件中可用的标签:

    SubFileType (1 Long): Page
    ImageWidth (1 Long): 1728
    ImageLength (1 Long): 1127
    BitsPerSample (1 Short): 1
    Compression (1 Short): Group 4 Fax (aka CCITT FAX4)
    Photometric (1 Short): MinIsWhite
    FillOrder (1 Short): Lsb2Msb
    StripOffsets (1 Long): 8
    SamplesPerPixel (1 Short): 1
    RowsPerStrip (1 Long): 1127
    StripByteCounts (1 Long): 14764
    XResolution (1 Rational): 204
    YResolution (1 Rational): 98
    Group3Options (1 Long): 5
    ResolutionUnit (1 Short): Inch
    PageNumber (2 Short): 0, 0
    Software (32 ASCII): Windows NT Fax Server           
    CleanFaxData (1 Short): 0
    ConsecutiveBadFaxLines (1 Short): 0
    37680 (5632 Undefined): 
    40003 (26 ASCII): U.S. Robotics 56K FAX EXT 
    40005 (1 ASCII):  
    40046 (1 Long): 1
    40047 (1 Long): 4
    40048 (1 Long): 256
    40049 (1 Long): 18
    40051 (1 SRational): 
    40052 (1 SRational): 
    40053 (1 Long): 2

1 个答案:

答案 0 :(得分:1)

TIFF可以有一个标签,用于定义图像行中数据的方向。此标记在 LibTiff 中称为TIFFTAG_ORIENTATION

有些值是:

  • 1 =第0行代表图像的视觉顶部,第0列代表视觉左侧。
  • 5 =第0行表示图像的可视左侧,第0列表示可视顶部。

根据这篇文章:

  

许多读者忽略了这个标签。

我怀疑Microsoft .NET Bitmap类是这些读者之一,而您的图片包含该标记。