2016-04-08 100 views
1

Neredeyse bir günlük arama geçirdim ama uygun bir çözüm bulamadı. Ben Silverlight tabanlı (8.1 telefon yerli kazanmak değil) benim galeri 8.1 telefon uygulaması için bir QR okuma modülü geliştiriyorumWin telefonun WriteableBitmap'sini dönüştürme 8.1 (silverlight) com.google.zxing adresinin BinaryBitmap'i

QR modülünü tamamlamak için zxing lib kullanıyorum. WriteableBitmap nesnesinin hangi kameradan (MediaCapture) görüntü aldığına ve QRCodeReader.decode (BinaryBitmap bb) kullanmak istiyorum.

Ben en çok makale belirttiği ancak Silverlight tabanlı uygulamalar için geçerli değil System.Windows referansı ihtiyacı olduğu bu (yerel uygulamanızda çalıştığı için RGBLuminanceSource kullanarak çalıştılar.

birisi için WriteableBitmap dönüştürme beni yönlendirebilir BinaryBitmap?

cevap

0

Ben photocamera sınıfını kullanarak ZXing ile ön pencere telefonda 8.1 aşağıdaki kodu kullandım. Şimdi bu hala amaçlar için geçerli olup olmadığını emin değilim ama burada LuminanceSource türetilmiş sınıftır.

internal class PhotoCameraLuminanceSource : LuminanceSource 
{ 
    public byte[] PreviewBufferY { get; private set; } 

    public PhotoCameraLuminanceSource(int width, int height) 
     : base(width, height) 
    { 
     PreviewBufferY = new byte[width * height]; 
    } 

    public override byte[] Matrix 
    { 
     get { return (byte[])(Array)PreviewBufferY; } 
    } 

    public override byte[] getRow(int y, byte[] row) 
    { 
     if (row == null || row.Length < Width) 
     { 
      row = new byte[Width]; 
     } 

     for (int i = 0; i < Height; i++) 
      row[i] = (byte)PreviewBufferY[i * Width + y]; 

     return row; 
    } 
} 

Daha sonra böyle kullanılır.

PhotoCamera.GetPreviewBufferY(_luminance.PreviewBufferY); 

var binarizer = new HybridBinarizer(_luminance); 

var binBitmap = new BinaryBitmap(binarizer); 

//Use readers to decode possible barcodes. 
var result = _QRCodeReader.decode(binBitmap); 

_luminance Çeşidi PhotoCameraLuminanceSource

olduğu