преобразование .__ comobj WIA в byte [] в приложении C # - PullRequest
0 голосов
/ 03 ноября 2019

У меня есть следующий код в моем приложении C #. Я хочу, чтобы он захватывал сканированный документ с помощью WIA в переменную byte [], но я не смог преобразовать .__comobject в byte []

private void btnScan_Click(object sender, EventArgs e)
        {
            try
            {
                var deviceManager = new DeviceManager();

                DeviceInfo AvailableScanner = null;

                for (int i = 1; i <= deviceManager.DeviceInfos.Count; i++) // Loop Through the get List Of Devices.
                {
                    if (deviceManager.DeviceInfos[i].Type != WiaDeviceType.ScannerDeviceType) // Skip device If it is not a scanner
                    {
                        continue;
                    }

                    AvailableScanner = deviceManager.DeviceInfos[i];

                    break;
                }

                var device = AvailableScanner.Connect(); //Connect to the available scanner.
                var ScanerItem = device.Items[1]; // select the scanner.
                var imgFile = ScanerItem.Transfer(FormatID.wiaFormatJPEG); //Retrive an image in Jpg format and store it into a variable.


                TypeConverter obj = TypeDescriptor.GetConverter(imgFile.GetType());
                byte[] bt = (byte[])obj.ConvertTo(imgFile, typeof(byte[]));
                MemoryStream ms = new MemoryStream(bt);
                pictureBox1.Image = Image.FromStream(ms);

                //PictureBox1.Image = img;
            }
            catch(COMException ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

1 Ответ

0 голосов
/ 03 ноября 2019

это просто использовать WIA.ImageFile, а затем преобразовать его с помощью FileData.get_BinaryData ():

WIA.ImageFile imagefile = item.Transfer(format) as WIA.ImageFile;
byte[] imageBytes = (byte[])imagefile.FileData.get_BinaryData();
...