2015-01-16 3 views
3

저는 Windows Phone 8.1에서 Zxing을 사용하여 코드 예제를 웹에서 검색했지만 짧게 나타났습니다.Windows Phone 8.1에서 Zxing을 사용하여 QR 코드 이미지를 만드는 방법

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

내가의 오류 가져 오기 : 나는 아래 C#으로 작성하고 있어요 것은 내가 지금까지 함께 온 내 코드입니다 "System.NullReferenceException :. 개체의 인스턴스로 설정되지 않았습니다 개체 참조를" 렌더링 된 QR 코드를 byte []로 변환하려고 할 때 생각합니다. 내가 어떤 도움을 주셔서 감사합니다 것

, 감사

+0

(내 애플 리케이션 중 하나에서 테스트) 포스 [NullReferenceException은 무엇이며 어떻게 수정합니까?] (http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) –

+0

내 문제는 예외를 처리하는 방법보다 zxing 라이브러리를 올바르게 사용하는 방법입니다. –

+0

stacktrace가없는 예외는이를 일으킨 행을 표시하지 않습니다. –

답변

5

using이

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는 완벽하게 작동합니다! –

관련 문제