2016-04-08 2 views
1

J'ai passé presque une journée à chercher, mais je n'ai pas trouvé de solution appropriée. Je développe un module de lecture de QR pour mon application de téléphone de victoire 8.1 qui est basée sur Silverlight (pas gagnant le téléphone 8.1 indigène)Convertir WriteableBitmap de win téléphone 8.1 (silverlight) en BinaryBitmap de com.google.zxing

J'utilise zxing lib pour compléter compléter le module QR. J'ai atteint le point où j'ai l'image de la caméra (MediaCapture) qui de l'objet WriteableBitmap et je veux utiliser l'api QRCodeReader.decode (BinaryBitmap bb).

J'ai essayé d'utiliser RGBLuminanceSource comme indiqué par la plupart des articles, mais qui fonctionne dans l'application native (car il a besoin de référence System.Windows qui n'est pas valable pour les applications Silverlight.

Quelqu'un peut-il me guider sur la conversion WriteableBitmap à BinaryBitmap?

Répondre

0

Je l'ai utilisé le code suivant sur le téléphone avant de la fenêtre 8.1 avec ZXing en utilisant la classe photocamera. maintenant, je ne sais pas si cela est toujours valable à des fins vous, mais voici la LuminanceSource classe dérivée.

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

Cela est alors utilisé comme ceci.

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 est de type PhotoCameraLuminanceSource