C# WIA 设置分辨率不会增加分辨率,而是增加图像的宽度和高度。在 C# 中
Posted
技术标签:
【中文标题】C# WIA 设置分辨率不会增加分辨率,而是增加图像的宽度和高度。在 C# 中【英文标题】:C# WIA set resolution doesnt increase resolution instead increases image width and height. in C# 【发布时间】:2017-02-03 19:34:53 【问题描述】:我正在尝试使用 C# 中的 WIA(Windows 图像采集库 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】:这里是样例,你可以照着试试
private void setItem(IItem item, object property, object value)
WIA.Property aProperty = item.Properties.get_Item(ref property);
aProperty.set_Value(ref value);
internal bool Scan(bool flatBed)
WIA.DeviceManager manager = new DeviceManager();
bool result = false;
object something = 1;
object somethingElse;
WIA.Device scanner = manager.DeviceInfos.get_Item(ref something).Connect();
IItem item = scanner.Items[1];
setItem(item, "6146", 4);
setItem(item, "6147", 200);
setItem(item, "6148", 200);
setItem(item, "6151", 200 * 8.5);
setItem(item, "6152", 200 * 11);
第一个setItem是颜色[4个黑白,2个灰度,1个颜色,0个未指定] 二是水平分辨率。 三是垂直分辨率。 四是水平扫描区域。 第五个是垂直扫描区域。
【讨论】:
感谢回复,但不工作,同样的结果是图像link。以上是关于C# WIA 设置分辨率不会增加分辨率,而是增加图像的宽度和高度。在 C# 中的主要内容,如果未能解决你的问题,请参考以下文章