Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何找到图像';s DPI(如果未设置),WPF/WIC?_C#_Wpf_Image_Image Processing_Wic - Fatal编程技术网

C# 如何找到图像';s DPI(如果未设置),WPF/WIC?

C# 如何找到图像';s DPI(如果未设置),WPF/WIC?,c#,wpf,image,image-processing,wic,C#,Wpf,Image,Image Processing,Wic,我这里有个小问题。我正在使用以下代码段调整图像的大小: public static BitmapFrame FastResize(BitmapFrame image, int width, int height) { var scaleX = width / image.Width * 96 / image.DpiX; var scaleY = height / image.Height * 96 / image.DpiY; var target = new Transf

我这里有个小问题。我正在使用以下代码段调整图像的大小:

public static BitmapFrame FastResize(BitmapFrame image, int width, int height) {
    var scaleX = width / image.Width * 96 / image.DpiX;
    var scaleY = height / image.Height * 96 / image.DpiY;
    var target = new TransformedBitmap(image, new ScaleTransform(scaleX, scaleY, 0, 0));
    return BitmapFrame.Create(target);
}
问题是当我计算
scaleX
scaleY
的值时。有些图像具有DPI,但有些图像具有
0.00
,或者我可以假设没有为这些图像设置DPI。因此,对于这两个
scaleX
scaleY
变量,我得到了值
Infinity
。因为
image.DpiX
image.DpiY
的值是
0.00
。好吧,它不会抛出试图除以零的异常

为了在图像缩放/调整大小过程后获得高质量和预期的质量,我需要以这种方式计算
scaleX
scaleY
width/image.width*96/image.DpiX
。但是,正如我已经提到的,有些图像没有DPI设置


所以我的问题是,在这种情况下,如果图像没有DPI设置,我应该怎么做,以防止这些变量有一个值
无穷大
?如果未设置,是否有默认DPI值可用于图像?或者是一种使用WPF/WIC(WPF和Windows Imaging Component)以编程方式计算PDI的方法,即使未设置它?

检查您的所有图像是否都是基于像素的。基于矢量的图像没有DPI。

谢谢回复。我的程序不在乎图像是基于像素还是基于向量的。它需要缩放任何提供的图像。假设图像是基于矢量的,那么在这种情况下,我如何计算
scaleX
scaleY
变量的值呢?这就是你的问题,你必须先检查图像是否是矢量od pixel,阅读关于矢量图像和像素图像之间差异的描述,很清楚Jpeg图像可以基于矢量吗?我刚刚检查了一个图像,它是jpeg,没有DPI设置。这张图片是用iPhone拍摄的。当你接受所有类型的图片时,有很多参数在起作用,所以我建议你仔细阅读它们。例如,可以使用开关,根据图像的类型,以不同的方式处理缩放。