在WPF图像控件中,Tiff图像未显示实际大小

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

我想要实现的基本上是Windows Photo Viewer如何显示图像的副本.您可以看到它们适合屏幕,或按一个按钮,如果需要,它会使用滚动条缩放到实际大小.我有2个tiffs工作. 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

    < ScrollViewer Horizo​​ntalScrollBarVisibility =“auto”>
        < Viewbox控件>
            < Image x:Name =“myImage”/>
        < / Viewbox控件>
    < /&的ScrollViewer GT;

最佳答案 WPF考虑了图像的dpi.如果您有2个不同的图像,两者都是800×600像素,一个是300 dpi,另一个是200 dpi;这两个图像将在WPF应用程序中显示为不同的大小.

其中一些原因给出了here.
斯科特汉塞尔曼在这个问题here上也有一点点模糊.

点赞