Twain 扫描输出将 intptr 转换为图像

Posted

技术标签:

【中文标题】Twain 扫描输出将 intptr 转换为图像【英文标题】:Twain scan output convert intptr to image 【发布时间】:2014-05-21 05:04:32 【问题描述】:

使用 twain 扫描仪扫描并在 Mdi 表单内显示代码显示输出我需要将其显示在图片框内,可以吗?我尝试了一些关于将 intptr 转换为 image 或 somethnig 的方法,但没有找到正确的方法。

下面的代码;

                        case TwainCommand.TransferReady:
                        
                        ArrayList pics = tw.TransferPictures();
                        EndingScan();
                        tw.CloseSrc();
                        picnumber++;
                        for (int i = 0; i < pics.Count; i++)
                        
                          IntPtr img = (IntPtr)pics[i];
                          PicForm newpic = new PicForm(img);
                          newpic.MdiParent = this;
                          int picnum = i + 1;
                          newpic.Text = "ScanPass" + picnumber.ToString() + "_Pic" +                picnum.ToString();
                         newpic.Show();
                        
                        break;

            public ArrayList TransferPictures()
                    
                    ArrayList pics = new ArrayList();
                    if( srcds.Id == IntPtr.Zero )
                        return pics; 
                    TwRC rc;
                    IntPtr hbitmap = IntPtr.Zero;
                    TwPendingXfers pxfr = new TwPendingXfers();
                    do
                
            pxfr.Count = 0;
            hbitmap = IntPtr.Zero;
            TwImageInfo iinf = new TwImageInfo();
            rc = DSiinf( appid, srcds, TwDG.Image, TwDAT.ImageInfo, TwMSG.Get, iinf );
            if( rc != TwRC.Success )
                
                CloseSrc();
                return pics;
                
            rc = DSixfer( appid, srcds, TwDG.Image, TwDAT.ImageNativeXfer, TwMSG.Get, ref hbitmap );
            if( rc != TwRC.XferDone )
                
                CloseSrc();
                return pics;
                
            rc = DSpxfer( appid, srcds, TwDG.Control, TwDAT.PendingXfers, TwMSG.EndXfer, pxfr );
            if( rc != TwRC.Success )
                
                CloseSrc();
                return pics;
                
            pics.Add( hbitmap );
            
        while( pxfr.Count != 0 );
        rc = DSpxfer( appid, srcds, TwDG.Control, TwDAT.PendingXfers, TwMSG.Reset, pxfr );
        return pics;
        

【问题讨论】:

【参考方案1】:

您可以使用位图构造函数。更多信息可以在以下位置找到: http://msdn.microsoft.com/en-us/library/zy1a2d14.aspx

【讨论】:

以上是关于Twain 扫描输出将 intptr 转换为图像的主要内容,如果未能解决你的问题,请参考以下文章

twain 扫描仪未从扫描仪获取图像

佳能 TWAIN 扫描仪卡在“预热”几分钟

使用 TWAIN 扫描的图像的计算精度

使用 Twain.Dll 扫描图像

需要信息 TWAIN 和 WIA 驱动程序来扫描 C# 中的图像?

用于从 Twain 源(扫描仪)获取图像的 php 脚本 [关闭]