C#WIA设置分辨率不会增加分辨率而是增加图像宽度和高度。在C#中

时间:2016-09-26 12:42:00

标签: c# resolution wia

我正在尝试使用C#中的WIA(Windows Image Acquisition Library v2.0)扫描文档/照片,但是当我增加分辨率时它不会增加分辨率而是增加图像的宽度和高度,但分辨率保持不变。 (扫描仪的默认dpi为75 dpi) ImageFile 变量始终具有96 dpi。

例如。 如果默认为dpi 75,则图像的宽度和高度为100 如果我将dpi设置为150,图像的宽度和高度将为200。 但是无论我设置了什么dpi,生成的ImageFile总是有96 dpi。

            WIA.ImageFile img = null;
            WIA.Item Item = WiaDev.Items[1] as WIA.Item;


            try
            {
                Item.Properties.get_Item("4104").set_Value(24);
                Item.Properties.get_Item("6146").set_Value(1);


                double OrigResolution = Convert.ToDouble(Item.Properties["6147"].get_Value().ToString());
                double ResDiff = 0.0;
                int width = 0, height = 0;
                if (OrigResolution < dpi)
                {
                    ResDiff = 150 / OrigResolution;
                    width = (int)Math.Floor((Convert.ToDouble(Item.Properties["6151"].get_Value().ToString()) * ResDiff));
                    height = (int)Math.Floor((Convert.ToDouble(Item.Properties["6152"].get_Value().ToString()) * ResDiff));

                    Item.Properties["6149"].set_Value(0);
                    Item.Properties["6150"].set_Value(0);

                    Item.Properties.get_Item("6147").set_Value(dpi.ToString("0.0"));
                    Item.Properties.get_Item("6148").set_Value(dpi.ToString("0.0"));

                    Item.Properties["6151"].set_Value(width);
                    Item.Properties["6152"].set_Value(height);
                }

                img = (ImageFile)WiaCommonDialog.ShowTransfer(Item, WIA.FormatID.wiaFormatJPEG, false);
                img.SaveFile("D:\\Test.jpg");

1 个答案:

答案 0 :(得分:0)

以下是示例示例,您可以根据它进行尝试

setUp()

第一个setItem是颜色[4个黑白,2个灰度,1个颜色,0个未指定] 第二个是水平分辨率。 第三是veritcal解决方案。 第四是水平扫描区域。 第五是垂直扫描区域。