wia Kodak 扫描仪应用 winform

wia

 

代码
        private ImageFile imageFile = null;
        
private string ScanTemp = ConfigurationSettings.AppSettings["ScanTemp"].ToString().Trim();
        
private string imgType = "jpg";
        
private DeviceManager manager = null;
        
private Device device = null;
        
private List<System.Drawing.Image> imgs = new List<System.Drawing.Image>();

        
private List<System.Drawing.Image> StartScan()
        {
            manager 
= new DeviceManagerClass();
           
            
foreach( DeviceInfo info in manager.DeviceInfos )
            {
                
if( info.Type != WiaDeviceType.ScannerDeviceType ) continue;
                device 
= info.Connect();
                
break;
            }

            
if( device == null )
            {
                
throw new Exception("扫描仪没连接!");
            }

            Item item 
= device.Items[1];
            CommonDialogClass cdc 
= new WIA.CommonDialogClass();
            
//string formatID = this.GetWiaFormat();
            try
            {
                imageFile 
= cdc.ShowAcquireImage( WiaDeviceType.ScannerDeviceType, WiaImageIntent.UnspecifiedIntent,
                                                 WiaImageBias.MinimizeSize, 
"{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}"truefalsefalse );
                
            }
            
catch( System.Runtime.InteropServices.COMException ex)
            {
                imageFile 
= null;
                
//throw new Exception( ex.Message );
            }

            
while( imageFile != null )
            {
                var buffer 
= imageFile.FileData.get_BinaryData() as byte[];
                
using( MemoryStream ms = new MemoryStream() )
                {
                    ms.Write( buffer, 
0, buffer.Length );
                    imgs.Add( System.Drawing.Image.FromStream( ms ) );
                }
                imageFile 
= null;

                
try
                {
                    imageFile 
= cdc.ShowTransfer( item, "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}"false ) as ImageFile;
                }
                
catch( Exception ex )
                {
                    
return imgs;
                    
//throw new Exception( ex.Message );                    
                }          
            }
            
return imgs;
        }

 

 

 

 

Kodak

 

代码
            try
            {
                
int k = axImgScan1.ShowSelectScanner();//选择扫描仪
                int ll_rtn = axImgScan1.OpenScanner(); //打开扫描仪 
                if( ll_rtn == 0 )
                {
                    
if( axImgScan1.ScannerAvailable() == true )//判断扫描仪是否可用 
                    {
                        
//axImgScan1.PageOption = PageOptionConstants.AppendPages;
                        
//axImgScan1.PageType = PageTypeConstants.BlackAndWhite;
                        
//axImgScan1.PageCount = 0;
                        axImgScan1.MultiPage = true;//是否多页 
                        
//axImgScan1.PageCount = axImgScan1.PageCount + 1;
                        string pathGen = ScanTemp + ScanPageName();// @"c:\abc.tif";                        
                        axImgScan1.Image = pathGen;
                        axImgScan1.FileType 
= FileTypeConstants.TIFF;//设置文件类型 
                        
//axImgScan1.GetPageTypeCompressionInfo( ImageTypeConstants.BlackAndWhite1Bit );
                        
//axImgScan1.GetPageTypeCompressionType( ImageTypeConstants.BlackAndWhite1Bit ); 

                       
// axImgScan1.CompressionType = CompressionTypeConstants.JPEG;
                        axImgScan1.ScanTo = ScanToConstants.FileOnly;//.DisplayAndUseFileTemplate;
                        
//axImgScan1.ShowSetupBeforeScan = false;//是否在扫描前显示设置界面
                        axImgScan1.SetPageTypeCompressionOpts( CompPreferenceConstants.CustomSettings, ImageTypeConstants.TrueColor24bitRGB, CompTypeConstants.Uncompressed, CompInfoConstants.NoCompInfo );
                        axImgScan1.StopScanBox 
= false;
                        axImgScan1.Show();
                        
//axImgScan1.GetCompressionPreference() = CompPreferenceConstants.SmallestFile;

                        ll_rtn 
= axImgScan1.StartScan();//开始扫描

                        
if( ll_rtn == 0 )
                        {
                            Byte[] filebyte 
= GetScanFileByte( axImgScan1.Image );
                            axImgScan1.CloseScanner(); 
//关闭扫描仪                            
                            
//axImgEdit1.Image = axImgScan1.Image;
                            
//axImgEdit1.SaveAs( axImgScan1.Image, FileTypeConstants.TIFF, PageTypeConstants.BlackAndWhite, CompressionTypeConstants.NoCompression, CompInfoConstants.NoCompInfo, true );
                        }
                        
else
                        {
                            MessageBox.Show( 
"扫描仪没有正确连接或扫描控件已破坏,请检查!""系统提示" );
                        }
                        axImgScan1.CloseScanner(); 
//关闭扫描仪
                    }
                    
else
                    {
                        MessageBox.Show( 
"扫描仪没有正确连接,请重新设置!""系统提示" );
                    }
                }
                
else if( ll_rtn == 9219 )
                {
                    MessageBox.Show( 
"系统没有安装扫描仪或扫描仪没有正确连接!""系统提示" );
                }
            }
            
catch( Exception ex )
            {
                MessageBox.Show( ex.Message );
            }

 

 

IMGADMIN.OCX

 

代码
          //选择图片显示 axImgAdmin1用法
            axImgAdmin1.Image = "";
            axImgAdmin1.DialogTitle 
= "选择一张图片";
            axImgAdmin1.Filter 
= "All Image Files |*.bmp; *.jpg; *.tif|Bitmap Files(*.bmp)|*. bmp|JPG Files (*.jpg)|*.jpg|TIFF Files (*.tif)|*.tif|All Files (*.*)|*.*|";

            axImgAdmin1.FilterIndex 
= 4;   //选择默认文件类型,对应Filter
            axImgAdmin1.InitDir = "c:\\";  //选择的默认路径
              axImgAdmin1.CancelError = false;
            axImgAdmin1.ShowFileDialog( AdminLibCtl.DlgOptionValue.OpenDlg );
            
if( axImgAdmin1.Image == "" )
            {

            }
            
else
            {
                axImgEdit1.Image 
= axImgAdmin1.Image;
                axImgThumbnail1.Image 
= axImgAdmin1.Image;
                axImgEdit1.Display();
                
//MessageBox.Show( axImgEdit1.PageCount.ToString() );
            }

 

 

posted @ 2011-01-18 10:32  Magicam  阅读(1639)  评论(2编辑  收藏  举报