如何通过程序控制扫描仪的扫描分辨率

tao637 2004-09-15 04:50:43
用ImgEdit, ImgScan控件时,设置
ImgScan1.ShowSetupBeforeScan := False;时就不弹出标准界面了。

// 图片色深
// 0: Custom
// 1: Common
// 2: 彩色(24位)
// 3: 灰度(8位)
// 4: 黑白(2位)
ImgEdit1.ImagePalette := StrToInt(COmboBox2.Text);

if ImgScan1.ScannerAvailable then
ImgScan1.OpenScanner;

// 图片文件类型
// 1: TIFF
// 2: AWD(传真)
// 3: BMP
// 6: JPG
ImgScan1.FileType := StrToInt(ComboBox1.Text);

// 图片缩放比率
// 0--100
ImgScan1.Zoom := StrToInt(LabeledEdit1.Text);

// 扫描时不现实标准窗口
ImgScan1.ShowSetupBeforeScan := False;

ImgScan1.StartScan;

ImgScan1.CloseScanner;

但是分辨率如何设置??????是不是不能通过这两个控件设置?

如果不能,是不是可以通过TWAIN_32.dll实现? 如何实现呢?

弄了N天, 搞不定, 大家帮帮忙,小弟不才
...全文
286 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
GoldShield 2004-09-23
  • 打赏
  • 举报
回复
楼主的问题我是不会的,不过楼主的贴子我到是要收藏了,谢谢.
学到一点点
stonewind 2004-09-23
  • 打赏
  • 举报
回复
不知你用的什么控件,你可用下pegasus imaging的twainpro 控件,在www.2ccc.com下载

例程代码:

.NET,VB,Delphi,VC++,C++ Builder,HTML

支持平台:

Win9x,Win2000,WinNT,WinXP

支持开发工具:
Visual Basic, Visual C++, Visual Studio.NET, Delphi, C++Builder, Microsoft Office, IE.

功能介绍:
● 使用ATL组件格式,不需要任何运行文件支持。
● 为.NET提供专用格式的组件。
● 从TWAIN扫描设备和数相机上获取图像。
● 多个图像获取功能。
● 可以生成 G3/G4 TIFF, JPEG 和PackBits 图形文件。
● 支持FTP upload 功能。
● 设置图像的分辨率、扫描线、颜色深度等。
● 支持所有通用设备驱动功能,例如:图像维数、方位、分辨率等。
● 支持可选设备驱动功能,例如:自动调整尺寸、亮度、大图像传输等功能。
● 扫描图像传输方式使传输变得更快而且消耗资源很小。
● 提供对高级TWAIN设备功能的支持,例如条形码设备、扫描仪。
● ......


zwb666 2004-09-16
  • 打赏
  • 举报
回复
帮你up
tao637 2004-09-16
  • 打赏
  • 举报
回复
使用TWAIN.h转化而来的TWAIN.pas文件, 调用TWAIN_32.dll文件.

// 图片信息
TW_IMAGEINFO = packed record // DAT_IMAGEINFO. App gets detailed image info from DS with this.
XResolution :TW_FIX32; // Resolution in the horizontal
YResolution :TW_FIX32; // Resolution in the vertical
ImageWidth :TW_INT32; // Columns in the image, -1 if unknown by DS
ImageLength :TW_INT32; // Rows in the image, -1 if unknown by DS
SamplesPerPixel :TW_INT16; // Number of samples per pixel, 3 for RGB
BitsPerSample :Array[0..7]of TW_INT16; // Number of bits for each sample
BitsPerPixel :TW_INT16; // Number of bits for each padded pixel
Planar :TW_BOOL; // True if Planar, False if chunky
PixelType :TW_INT16; // How to interp data; photo interp (TWPT_)
Compression :TW_INT16; // How the data is compressed (TWCP_xxxx)
end;

procedure SetResolution(Resolution: TW_INT16);
var
ScannerResolution: TW_IMAGEINFO;
begin
// 设置分辨率
ScannerResolution.XResolution.Whole := Resolution;
ScannerResolution.YResolution.Whole := Resolution;

// 打开Data Source(数据源,就是我们使用的扫描仪, 数码相机等图片采集设备),
// 经由Data Source Manager, 调用TWAIN_32.dll提供的DSM_Entry函数, 向Data Source
// 传送命令, 要求设置扫描仪的扫描参数. 这个命令写的对吗?
if TWisDSMOpen then
lpDSM_Entry(@AppID, NIL, DG_IMAGE, DAT_IMAGEINFO, MSG_SET, @ScannerResolution);
end;

应该是这样做吧?????
lili1 2004-09-15
  • 打赏
  • 举报
回复
帮你up

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧