Tiff图像不是';显示WPF图像控件中的实际大小

Tiff图像不是';显示WPF图像控件中的实际大小,wpf,image,tiff,Wpf,Image,Tiff,我一直在工作的WPF应用程序,需要能够显示多页TIFF在实际大小以及适合屏幕。我从另一个StackOverflow线程得到的代码非常适合于以实际大小显示其中的一些文件,但是新扫描的tiff文件(大约1700 x 800)显示为大约600 x 400 我试图实现的基本上是Windows照片查看器如何显示图像的副本。你可以看到他们适合屏幕,或者按下一个按钮,它会根据需要用滚动条缩放到实际大小。我有两个TIFF可以用。1是从mspaint保存为tiff的JPEG,另一(2)是较旧的扫描文档。1为180

我一直在工作的WPF应用程序,需要能够显示多页TIFF在实际大小以及适合屏幕。我从另一个StackOverflow线程得到的代码非常适合于以实际大小显示其中的一些文件,但是新扫描的tiff文件(大约1700 x 800)显示为大约600 x 400

我试图实现的基本上是Windows照片查看器如何显示图像的副本。你可以看到他们适合屏幕,或者按下一个按钮,它会根据需要用滚动条缩放到实际大小。我有两个TIFF可以用。1是从mspaint保存为tiff的JPEG,另一(2)是较旧的扫描文档。1为180dpi,32位深度,LZW压缩,2分辨率单位,由数码相机拍摄。2是200 dpi,1位深度,2分辨率单位,CCITT t.6压缩,这是一个扫描文件。不起作用的文件是300dpi,但在其他方面与#2相同

下面是我用来显示图像的代码

// Open a Stream and decode a TIFF image
Stream imageStreamSource = new FileStream("C:\\Users\\cblair\\Documents\\Visual Studio 2010\\Projects\\WpfApplication1\\WpfApplication1\\flowers.tif", FileMode.Open, FileAccess.Read, FileShare.Read);
TiffBitmapDecoder decoder = new TiffBitmapDecoder(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
BitmapSource bitmapSource = decoder.Frames[0];
 // Draw the Image
myImage.Source = bitmapSource;
还有XML


WPF考虑图像的dpi。如果您有两个不同的图像,都是800x600像素,但一个是300 dpi,另一个是200 dpi;这两个图像将在WPF应用程序中显示为不同的大小

下面给出了一些原因。

Scott Hanselman在这个问题上也有一点模糊。

我用DPI做了一些计算,看起来确实是因为WPF使用了“与设备无关的1/96英寸像素”。因此,它们显示得越小,DPI越高。