gpt4 book ai didi

resolution - 使用 WIA 检测所有可用的扫描仪分辨率

转载 作者:行者123 更新时间:2023-11-30 23:49:21 24 4
gpt4 key购买 nike

如何使用 WIA 2.0 以编程方式检测指定扫描仪的所有可用分辨率(以 dpi 为单位)?支持的页面大小如何?有任何想法吗?

最佳答案

伪代码:
假设您有设备信息,请连接到它:

var device = deviceInfo.Connect();
如果设备不为空.....那么你可以得到项目
请注意,设备项的项从索引 1 开始

Item item = device.Items[1];
一个 Item 有各种你可以列举的属性
例如

foreach (Property prop in item.Properties)
{
var temp = prop.Name + " " + prop.PropertyID + " " + prop.get_Value();
}

在这种情况下,要找到您可以使用的扫描仪支持的最大 DPI。
“水平光学分辨率”(属性 ID:3090)
“垂直光学分辨率”属性 ID:3091

.. 但是,如果您检查属性枚举,您将看到没有任何内容可以告诉您所有可用 DPI 设置的最小值或列表。
..现在我也找不到任何东西......
但是我确实找到了一种发现最小 DPI 的方法......
您可能知道 WIA 意图,枚举允许您设置扫描类型,例如颜色、灰度等(属性 ID:6146)

var currentIntent = item.Properties.get_Item("6146");
// set to colour
currentIntent.set_Value(WiaImageIntent.ColorIntent);

.. 但是,您也可以通过这种方式设置 WIA 图像偏差(最大质量或最小尺寸)
这不是通过图像意图枚举,而是通过对适当的值进行 OR 运算来完成的

// set minimum size as WIA bias
var intent = (int)item.Properties.get_Item("6146").get_Value();
item.Properties.get_Item("6146").set_Value(intent | 0x00010000);



http://msdn.microsoft.com/en-us/library/ms630190%28v=vs.85%29.aspx

如果你现在看看 DPI(假设以前的 DOI 实际上不是最低限度)

var dpiHorizontal = item.Properties.get_Item("6147").get_Value();
var dpiVertical = item.Properties.get_Item("6148").get_Value();
.. 您应该看到 DPI 现在设置为最低(以提供最小尺寸扫描)

一个很大的警告。

一旦您设置了偏差(无论是最小尺寸还是最大质量),您之前设置的任何 DPI 值都会更改(图像尺寸等的各种其他属性也是如此——它会产生广泛的变化)。

.. 因此,如果您想保持控制,我建议只找到一次最小 dpi 并将其存储在配置中 – 或者如果您每次都这样做,则丢弃该项目(在获得最小 DPI 后)并使用没有设置偏差的新项目.

.. 所以你现在有最大和最小 DPI 值——如何获取列表?

.. 再次我不知道有什么办法 .. 但是
你可以有一个“合理的 DPI 值”列表
例如75、100、150、200、300、600、1200、2400
由于(取决于扫描仪分辨率)这些是支持的“流行”值
.. 根据您的最大/最小 DPI 值,您知道哪些“流行”值可能值得尝试。

..并在设置 DPI 时通过 try/catch 进行设置

例如

try
{
item.Properties.get_Item("6147").set_Value(myDPI); // horizontal DPI
item.Properties.get_Item("6148").set_Value(myDPI); // vertical DPI
}
catch
{
// not supported so have some logic where try a different “popular” value
}

我在我使用的一台扫描仪上看到了这种类型的问题——仅仅因为 DPI 在最大/最小限制内并不意味着它受到支持。
虽然许多扫描仪 WIA 驱动程序支持 100、100 DPI,但这个不提供 75,75 DPI 或 150,150 DPI
这种方法令人讨厌且笨拙但有效(您也可以只执行一次,浏览流行的“DPI”值列表,尝试设置它们,并留下您的扫描仪支持的 DPI 设置列表。

为简单起见,这些伪代码示例假设垂直和水平 DPI 都可以设置为相同的值......这可能不是所有扫描仪的情况!

关于resolution - 使用 WIA 检测所有可用的扫描仪分辨率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6215453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com