delphi - WIA的ShowAcquireImage只保存为BMP?

标签 delphi bmp wia scanning

我正在使用 Delphi XE 中的 WIA 2.0 库来自动扫描。我正在使用“ShowAcquireImage”函数来提供要保存到光盘的图像。我想将图像保存为压缩格式,例如 png 或 jpg,但该库似乎只保存为位图。

有其他人看到过这个问题吗?有解决方法吗? (除了作为大 bmp 文件保存到光盘并重新加载到 TJpegImage/TPngImage 对象之外)。

感谢您的任何建议 菲尔W。

这是我当前使用的代码:

<前>//... 使用 ComObj、WIA_TLB、 //... 过程 TMainForm.ScanWiaDocument(DocumentRef: String); 常量 wiaFormatJPEG = '{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}'; wiaFormatPNG = '{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}'; 变量 CommonDlg:ICommonDialog; AImage: IImageFile; 图像路径:字符串; 开始 CommonDlg := CreateOleObject('WIA.CommonDialog') as ICommonDialog; //转为JPG 试试 AImage := CommonDlg.ShowAcquireImage(ScannerDeviceType, ColorIntent,//或 UnspecifiedIntent, GrayscaleIntent, TextIntent 最小化尺寸,//或最大化质量 wiaFormatJPEG,//图像格式 **<----仅保存为BMP格式!**! False,//始终选择设备 False,//使用CommonUI 真的);//取消错误 //保存图像 ImagePath := 'C:\temp\scanimage\'+DocumentRef+'.'+ AImage.FileExtension; AImage.SaveFile(ImagePath); 除了 在 E:Exception 上执行 LogException(E, 'ScanWiaDocument', True); 结尾; 最后//释放接口(interface) CommonDlg := nil; AImage := nil; 结尾; 结尾;

最佳答案

您在问ShowAcquireImage()如果可能的话,以 JPG 格式捕获,但不必遵守这一点。当ShowAcquireImage()退出,返回ImageFile对象有一个 FormatID属性指定实际使用的格式,例如扫描仪不支持 JPG。如果该文件还不是 JPG 格式,则必须随后对其进行转换,例如使用 Wia.ImageProcess目的。 MSDN显示an example of doing that .

关于delphi - WIA的ShowAcquireImage只保存为BMP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7557430/

相关文章:

delphi - 十六进制到十进制转换器 (ESN Algo)

Delphi FireMonkey 存储来自组件的信息

c++ - 从像素数组加载颜色值

c# - 我应该在 C# 应用程序中存储 WIA 设备还是只存储 WIA 设备 ID?

c++ - 如何在 C++ 中使用 WIA?

macos - 在 Mac OS X 中访问扫描仪

pascal - 非法表达:如果,则为else语句

delphi - 这个产生超大数字的 C 乘法的等效 Delphi 代码是什么?

c++ - 从 RGB 值数组生成 BMP 文件

java 缓冲图像 : Detecting black pixels