2013-08-09 11 views
5

Scusa se ho torto, sto sviluppando l'app metropolitana utilizzando C# e XAML per Windows 8, La mia app è in grado di acquisire un'immagine di QR Code, salvarla nella libreria di immagini, decodificare Immagine QR (utilizzo la libreria XZing.Net per la decodifica) e visualizza il contenuto codificato nell'immagine QR. Ogni cosa funziona bene se I blocco Webcam flash light con il mio dito e cattura l'immagine, ma se la luce del flash è ON dopo l'acquisizione dell'immagine XZing.Net non può decodificare. C'è un modo per disattivare la luce del flash utilizzando verificare code.Please il mio codice qui sottoDisattiva l'app della webcam Flash light C#

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

"qrCameraElement" è istanza di CaptureElement

Il pulsante di acquisizione Clicca

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); 
} 

Sono ottenendo result come null quando viene utilizzato Webcam Flash. Mi aiuti per favore.

+0

dove abouts si fa a controllare 'result'? E hai provato a mettere un 'Console.WriteLine (e.Message);' nella tua dichiarazione catch (dove 'e' è l'eccezione)? – Andy

+0

Ok Andy, ho aggiunto il codice dove controllo "result", spero che tu capisca il mio problema, in pratica ho bisogno di spegnere il flash della webcam (LED) prima di catturare l'immagine (perché sto ottenendo "risultato" come nullo quando si usa il flash). Puoi aiutarmi con questo per favore .. –

+0

Ti capisco ora - Non ho trovato alcuna documentazione per il metodo 'Decode', ma sto raccogliendo che viene restituito nulla se l'immagine QR non può essere trovata, che non lo sarebbe se il flash lo offusca. Che webcam stai usando? ... Il problema è che, senza un serio hacking, potrebbe non essere possibile controllare questa funzione in quanto potrebbe essere utilizzata per scopi dannosi. – Andy

risposta