5

抱歉,如果我错了,我正在使用 C# 和 XAML 为 Windows 8 开发 Metro 应用程序,我的应用程序能够捕获 QR 码图像,将其保存在图片库中,解码 QR 图像(我正在使用 XZing.Net 库解码)并显示以 QR 图像编码的内容。如果我用手指挡住网络摄像头闪光灯并拍摄图像,一切正常,但如果在拍摄图像后闪光灯打开,XZing.Net 无法解码。有什么方法可以使用代码关闭闪光灯。请在下面查看我的代码

try
{
   MediaCapture m_mediaCaptureMgr = new MediaCapture();
   await m_mediaCaptureMgr.InitializeAsync();
  qrCameraElement.Source = m_mediaCaptureMgr;
  await m_mediaCaptureMgr.StartPreviewAsync();
}
catch(Exception)
{
}

“qrCameraElement”是 CaptureElement 的实例

在捕获按钮单击

StorageFile m_photoStorageFile = await ApplicationData.Current.LocalFolder.CreateFileAsync("QRImage.png", CreationCollisionOption.ReplaceExisting);
ImageEncodingProperties imageProperties = ImageEncodingProperties.CreatePng();
await m_mediaCaptureMgr.ClearEffectsAsync(MediaStreamType.Photo);
await m_mediaCaptureMgr.CapturePhotoToStorageFileAsync(imageProperties, m_photoStorageFile);

StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync("QRImage.png");

try
{
       using (IRandomAccessStream photoStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read))
{
     WriteableBitmap writeableBitmap = await BitmapFactory.New(1, 1).FromStream(photoStream);
                            writeableBitmap.SetSource(photoStream);
                            var barcodeReader = new BarcodeReader
                            {
                                PossibleFormats = new List<BarcodeFormat> { BarcodeFormat.QR_CODE },
                                TryHarder = true,
                                AutoRotate = true
                            };
                            var result = barcodeReader.Decode(writeableBitmap);
                            if(result != null)
                            {
                                //Do something
                            }
                            else 
                            {
                               //Display message as unable to read QR image
                            }
    }
    }
    catch(Exception e)
{
    Console.WriteLine(e.Message);
}

result当使用网络摄像头 Flash 时,我得到了空值。请帮我。

4

0 回答 0