使用twain获得扫描仪的图片问题?

asctwo 2013-07-25 11:11:54
PBITMAPINFOHEADER pDIB = (PBITMAPINFOHEADER)_DSM_LockMemory(hImg);

if(0 == pDIB)
{
printError(m_pDataSource, "App: Unable to lock memory, transfer failed");
break;
}




// Save the image to disk
FILE *pFile;
fopen("d:\\aa", "wb");
if(pFile == 0)
{
return;
}
else
{
DWORD dwPaletteSize = 0;

switch(pDIB->biBitCount)
{
case 1:
dwPaletteSize = 2;
break;
case 8:
dwPaletteSize = 256;
break;
case 24:
break;
default:
break;
}

// If the driver did not fill in the biSizeImage field, then compute it
// Each scan line of the image is aligned on a DWORD (32bit) boundary
if( pDIB->biSizeImage == 0 )
{
pDIB->biSizeImage = ((((pDIB->biWidth * pDIB->biBitCount) + 31) & ~31) / 8) * pDIB->biHeight;

// If a compression scheme is used the result may infact be larger
// Increase the size to account for this.
if (pDIB->biCompression != 0)
{
pDIB->biSizeImage = (pDIB->biSizeImage * 3) / 2;
}
}

int nImageSize = pDIB->biSizeImage + (sizeof(RGBQUAD)*dwPaletteSize)+sizeof(BITMAPINFOHEADER);

BITMAPFILEHEADER bmpFIH = {0};
bmpFIH.bfType = ( (WORD) ('M' << 8) | 'B');
bmpFIH.bfSize = nImageSize + sizeof(BITMAPFILEHEADER);
bmpFIH.bfOffBits = sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+(sizeof(RGBQUAD)*dwPaletteSize);

fwrite(&bmpFIH, 1, sizeof(BITMAPFILEHEADER), pFile);//在这行出现错误
fwrite(pDIB, 1, nImageSize, pFile);
fclose(pFile);
pFile = 0;


在第58行出错
...全文
195 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccrun.com 2013-07-25
  • 打赏
  • 举报
回复
FILE *pFile; fopen("d:\\aa", "wb"); 改成:
FILE *pFile = fopen("d:\\aa", "wb");
asctwo 2013-07-25
  • 打赏
  • 举报
回复
Graphics::TBitmap *targetBitmap = new Graphics::TBitmap();
LPBITMAPINFO bmi = (LPBITMAPINFO)GlobalLock(hBitmap);

   targetBitmap->Height = bmi->bmiHeader.biHeight;
   targetBitmap->Width = bmi->bmiHeader.biWidth;
   SetDIBits( targetBitmap->Canvas->Handle, targetBitmap->Handle, 0,
                      (UINT) bmi->bmiHeader.biHeight,
                      (Byte*)((Byte*)bmi + sizeof(BITMAPINFOHEADER)),
                      bmi, DIB_RGB_COLORS );
用上面这些代码可以将图片保存出来,但是是彩色的。在扫面的时候要扫面黑白的,所以上面方法就不行了
asctwo 2013-07-25
  • 打赏
  • 举报
回复
bmpFIH是文件信息头,pDIB包括位图信息头,调色板以及数据
ccrun.com 2013-07-25
  • 打赏
  • 举报
回复
你这个bmpFIH和pDIB是怎么关联的?我好像木有看到。
asctwo 2013-07-25
  • 打赏
  • 举报
回复
大小是273KB,用系统的画图扫面进来保存也273KB
ccrun.com 2013-07-25
  • 打赏
  • 举报
回复
本来我在1楼的回复只是帮你解决AV的问题,至于有没有图像显示,那要接着排错咯。 先看看写完以后文件大小是多少?
asctwo 2013-07-25
  • 打赏
  • 举报
回复
这个问题是解决了,但是文件打开后没有图像呀?
【大多企业遇到的问题】 1、贵公司 非结构化数据是否得到了统一的管理? 2、贵公司 是否还在使用客户端方式影像的采集? 3、贵公司 是否实现以影像为核心的流程化管理? 【我们将带给客户】 1、我们基于在金融行业多年沉淀的经验,将为客户提供企业级、专业化的影像管理系统的整体解决方案。 2、我们将为客户提供统一的非结构化数据的集中存储与管理工具,该系统提供灵活的接口支持任何第三方系统的接入。 3、我们为客户提供便捷、友好、强悍的非结构化数据的采集工具,该模块支持嵌入客户方的业务系统,最终实现以影像为核心的,更高效、风险更低的流程业务管理模式。 4、我们可以为客户提供完整的现场技术支持及定制开发服务。 【我们的优势】 1、起步虽晚,但我们用心在做国内最专业的影像采集平台;起步已晚,但我们拥有国内最先进的技术架构和设计理念。 2、影像采集系统独立与内容管理平台,可独立与内容管理平台实施部署,支持单独采购并接入其它第三方内容管理系统。 3、B/S技术架构,URL及WebService等多种接口支持与任意第三方系统的完美整合(支持业务流程整合),支持影像在业务系统中的全流程管理和控制。 4、影像采集支持各类TWAIN协议扫描仪、摄像头,支持本地文件加载,支持URL影像连接;不仅支持主流影像采集,还可以支持非影像文件的采集。 5、支持条码制作、条码识别功能,快速辅助扫描过程实现自动单证分类,并支持扫描识别后灵活的手工分单。 6、支持分布式部署,支持分公司缓存机制;文件提交支持网络流量控制。 7、控件附带完整的后台管理,支持大部分参数的统一管理、支持扫描清单查询、支持服务监控…… 8、后台支持目前企业级主流的内容管理平台:IBM CM、IBM FileNet、EMC Documentum…… 9、在金融领域十余年严谨开发经验,影像领域专业的软件公司,支持为客户个性化需求提供定制化的开发。 【操作说明】 1、安装“安装包”目录下的“setup.exe”文件,按照提示安装影像采集ActiveX工具(Windows7及以上系统C盘存在保护机制,建议将控件安装到D盘)。 2、打开IE浏览器(如果是Windows7或Windows8系统,IE需要用管理员权限打开), 将IE浏览器的“Internet选项 -> 安全 -> 本地Intranet -> 自定义级别”中,启用“对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本”。 3、在IE浏览器中打开“宏天采集控件演示.html”文件,在IE提示下选择“允许阻止的内容”,“允许与ActiveX交互”(Windows7及以上系统C盘存在保护机制,建议以管理员身份打开IE浏览器)。 4、弹出“系统参数设置”窗口后,即可使用宏天影像采集前端系统。 5、在控件中加载“采集测试文件”中的全部文件,或设置扫描仪后扫描,即可开始宏天影像采集前端的体验。 【有效期】 本次演示系统有效期到2013年9月29日,过期后将无法使用条码识别、影像编辑等部分功能,如需继续测试可以将本机操作系统的日期调整到2013年9月30日前。 【主要功能】 1、支持全方位的采集方式: 1.1、支持标准TWAIN协议扫描仪及主流摄像头、高拍仪的影像采集。 1.2、支持影像文件的本地加载,支持对非影像文件的本地加载。 1.3、支持URL方式网站图像的动态加载(Demo中仅支持jpg)。 2、支持丰富的扫描影像编辑(支持多选的批量操作): 2.1、任意角度旋转、自动纠偏。 2.2、自定义裁剪、尺寸调整。 2.3、转灰度影像、转黑白影像、。 2.4、去黑边、黑白影像去噪点。 2.5、支持影像的水平切割和垂直切割。 2.6、支持对彩色影像亮度、对比度的调整。 3、支持友好的展现及操作: 3.1、提供多种模式(1*3、1*5、5*2、8*3)显示缩略图。 3.2、提供自适应屏、自适应宽、原始尺寸、放大镜等多种方式显示单一视图。 3.3、双击图片将体验国内影像采集系统中独一无二的友好性。 4、提供友好的扫描分单: 4.1、根据条码及后台配置,实现扫描、本地加载过程中的自动分单。 4.2、提供自动分单后的手工调整:手工分单、调整单证类型、鼠标拖拽、修改单证印刷号、拷贝剪切粘贴等多种方式。 5、支持采集过程中自动获取签名,支持采集后的手工截取签名。 6、提供完整的历史批次的缓存管理,自动记录缓存、自定义缓存标识、手工清理缓存、加载历史缓存。 7、支持批量扫描、逐笔扫描、仅追加扫描、只读查询、影像随动等多种显示模式。 8、提供条码打印、文件另存、影像打印、历史版本查询、采集清单等辅助功能
ImageEn 是一款适用于图像处理,观察和分析的控件。它能加载和保存为若干种图像文件格式,包括从Twain 扫描仪获得图像(单个和多个页面),屏幕截图,使用滤镜,合并图像,选择图像区域(支持魔术棒)以至于其他的图像格式。ImageEn允许你在你的应用 程序中安装包括专业版的图形软件制作特征。 提供不同的加载/保存操作 加载并保存为JPEG(RGB, GrayScale, YCbCr, CMYK, YCbCrK)格式到文件中(with also 1/2, 1/4 and 1/8 subsizes for fast preview)。读出/写入APP0-APP15,COM Jpeg标记。 JPEG2000:JP2,J2K,J2K和JPC代码串格式(标准的JPEG-2000 Part-1,ISO/IEC 15444-1) 可对Jpeg格式的图片进行无损的转换与剪切 评估一个jpeg文件的精度 处理ICC轮廓时可随意选择颜色管理系统(CMS) 读取/写入Exif信息(在Jpeg和TIFF中)。无需下载或转换原图像就能转换EXIF图像信息。 使用RGB,CMYK,B/W,CIELab为该文件加载并储存为TIFF(rev.6.0 and Tech. Note #2,Packbits, JPEG,LZW,CCITT G.3和G.4)格式,还提供FAX(CCITT3),G3F和G3N(Zetafax)的加载格式,同时也支持4,8,16,32,64,128 和 256位的颜色调板。 加载为G3F和G3N(Zetafax 样式) 无需解压就能实现本地操作,在TIFF文件中支持添加/移动/提取/enum以至于更快的处理方式。 读取简单的TIFF标签 保存为(PS和EPS)的附件形式,使用RLE,G3Fax,G4Fax和Jpeg格式对单个的或多个页面进行压缩。 保存为Adobe PDF格式。使用G3Fax, G4Fax and Jpeg格式对单个的或多个页面进行压缩。 以不同的压缩标准加载并保存为PNG格式 加载和保存压缩和未经压缩的2,16,256或16M颜色到BMP文件中 加载和保存未经压缩的黑/白WBMP(Wireless位图)图像 加载和保存压缩和未经压缩的2,16,256或16M颜色到PCX文件中 加载并储存为2,4,8,16,32,64,128或256色的GIFs格式的文件或串 加载并保存为DCX(多页的PCX)的文件格式 加载并保存为DIB,RLE,TGA(TARGA,VDA,ICB,VST,PIX)的文件格式 加载和保存便携式的PBM,PGM和PPM位图 加载并保存为ICO文件格式(随multi 溶解和颜色深度来预定义ICO设置) 加载WMF,EMF和CUR文件格式 加载并保存为AVI, 动态的GIF和多页的TIFF文件格式 读取单独的AVI帧格式 从JPEG和TIFF图像中读取/写入IPTC(IIMV4)信息(像PhotoSho中的文信息)。无需加载XIng或改变原图像就能替换IPTC中的信息。 为用户提供自定义的文件格式 支持Alpha通道模式(设置图像的透明度) 编辑动态的GIF图像:可提取,插入和删除单个图像 编辑多文本的TIFF图像:可提取,插入和删除单个图像 在读取/写入LZW GIF和TIFF图像的样品插件中附带有源代码 为GIF文件添加NON-LZW-GIF压缩样品插件 为GIF和TIFF图像添加标准的LZW压缩/解压的样品插件 无需加载就能设置图像属性 用户界面无需默认扫描仪的设置和完全控制扫描仪的功能就能从TWAIN 扫描仪中获取图像,同时支持模式和非模式的采集 从WIA扫描仪和照相机中获取图像 保存/加载有效的文件格式参数和保存/加载可预览的对话框(如:你能设置一个Jpeg图像的品质并可立即预览该图像的品质是否丢失),适用于Win2000/Xp/Me操作系统。 选择语言属性对话框(English, Italian, German, Spanish, French, Portuguese, Greek, Russian, Dutch, Swedish, Polish 或用户自定义的语言) 支持标准的TImage控件的链接 OnProgress事件适合于监测储存和加载信息 提供异常的输入/输出处理 为GIT,TIFF,PNG,ICO,CUR,TGA图像加载alpha通道模式 屏幕截图 使用http协议(LoadFromURL)从网络中加载图像 在TPicture中注册ImageEn格式的文件(打开/储存TImage和VCL的对话框) 提供Wang图像注释(加载/编辑/保存) 打印: 打印(和打印预览)功能,可从指定的页面队列或相对位置中打印简单的图像 print dialog with preview 安装方法: 1)解压缩到特定目录ImageEn 3.02,把该目录中的source和lib添加到Delphi的library path目录; 2)把ImageEn 3.02\Delphi7的DPK等拷贝到源文件目录ImageEn 3.02; 3)编译PKIECtrl7.dpk和PKIEDB7.dpk; 4)安装DPKIECTRL7.dpk和DPKIEDB7.dpk。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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