2015-01-16 11 views
3

Я искал в Интернете примеры кода, используя Zxing в Windows Phone 8.1, но придумал короткий. Я пишу в C# и ниже мой код, который я придумал до сих пор:Как создать изображение QR-кода с помощью Zxing на Windows Phone 8.1

BarcodeWriter _writer = new BarcodeWriter(); 

var hello = _writer.Encoder.encode("HelloWhoIsThere", BarcodeFormat.QR_CODE, 350, 350); 

ZXing.Common.BitMatrix matrix = new ZXing.Common.BitMatrix(359,350); 

ZXing.Rendering.PixelData rendered = _writer.Renderer.Render(hello, BarcodeFormat.CODE_128, "HelloWhoIsThere"); 

byte[] byte1 = rendered.Pixel; 

Stream memStream = new MemoryStream(byte1); 

memStream.Position = 0; 

BitmapDecoder decoder = await BitmapDecoder.CreateAsync(memStream.AsRandomAccessStream()); 

// create a new stream and encoder for the new image 
InMemoryRandomAccessStream mrAccessStream = new InMemoryRandomAccessStream(); 
BitmapEncoder encoder = await BitmapEncoder.CreateForTranscodingAsync(mrAccessStream, decoder); 

// convert the bitmap to a 400px by 400px bitmap 
encoder.BitmapTransform.ScaledHeight = 350; 
encoder.BitmapTransform.ScaledWidth = 350; 

// write out to the stream 
try 
{ 
    await encoder.FlushAsync(); 
} 
catch (Exception ex) 
{ 
    string s = ex.ToString(); 
} 

// render the stream to the screen 
WB = new WriteableBitmap(350, 350); 
WB.SetSource(mrAccessStream); 
if (WB != null) 
{ 
    SelectedImage.Source = WB; 
} 
if (WB == null) 
{ 
    txtDecoderContent.Text = "WB = null"; 
} 

я получаю ошибку «System.NullReferenceException: ссылка на объект не указывает на экземпляр объекта.» который, я думаю, происходит, когда я пытаюсь преобразовать преобразованный QR-код в байт [].

Я был бы признателен за любую помощь, спасибо

+0

ПОСС ib duplicate of [Что такое исключение NullReferenceException и как его исправить?] (http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) –

+0

моя проблема в том, как правильно использовать библиотеку zxing, чем как обрабатывать исключение. –

+0

Исключение без stacktrace не дает указания на вызвавшую его строку. –

ответ

5

usings

using ZXing; 
using Windows.UI.Xaml.Media.Imaging; 

код

IBarcodeWriter writer = new BarcodeWriter 
      { 
       Format = BarcodeFormat.QR_CODE, 
       Options = new ZXing.Common.EncodingOptions 
       { 
        Height = 300, 
        Width = 300 
       } 
      }; 
var result = writer.Write("generator works"); 
var wb = result.ToBitmap() as WriteableBitmap; 

//add to image component 
image.Source = wb; 

гораздо проще и работает (проверено в одном из моих приложений)

+0

спасибо sooo много, работает отлично !! –