2013-08-09 5 views
5

Entschuldigung, wenn ich falsch liege, bin ich Metro-Anwendung mit C# und XAML für Windows 8, Meine App hat die Fähigkeit, ein QR-Code-Bild zu speichern, speichern Sie es in Bild-Bibliothek, zu dekodieren QR-Bild (Ich verwende XZing.Net-Bibliothek zum Decodieren) und Inhalte anzeigen, die in QR-Bild codiert sind. Alles funktioniert gut, wenn ich Webcam Blitzlicht mit meinem Finger blockieren und Bild aufnehmen, aber wenn Blitzlicht ist nach der Aufnahme Bild XZing.Net kann nicht in der Lage zu entschlüsseln. Gibt es eine Möglichkeit, deaktivieren Lichtblitz kann mit code.Please meinen Code überprüfen unterSchalten Sie Webcam Blitzlicht U-Bahn-App C#

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

„qrCameraElement“ ist Instanz von CaptureElement

Auf Aufnahmetaste klicken

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

Ich bin result als null erhalten, wenn Webcam Flash verwendet wird. Bitte hilf mir.

+0

Wo abouts überprüfen Sie 'result'? Und haben Sie versucht, eine 'Console.WriteLine (e.Message);' in Ihre catch-Anweisung zu setzen (wo 'e' die Ausnahme ist)? – Andy

+0

Ok Andy, ich habe einen Code hinzugefügt, wo ich "result" überprüfe, ich hoffe, du verstehst mein Problem, im Grunde muss ich den Webcam-Blitz (LED) ausschalten bevor ich das Bild aufgenommen habe (weil ich "result" als null erhalte wenn Flash benutzt wird) .Kannst du mir bitte dabei helfen .. –

+0

Ich verstehe dich jetzt - ich konnte keine Dokumentation für die 'Decode'-Methode finden, aber ich sammle, dass Null zurückgegeben wird, wenn das QR-Bild nicht gefunden werden konnte, was es ist wäre nicht, wenn der Blitz es verwischt. Welche Webcam verwenden Sie? ... Das Problem besteht darin, dass Sie keine ernsthaften Hacker-Probleme haben, da diese Funktion möglicherweise nicht für bösartige Zwecke verwendet werden kann. – Andy

Antwort