Windows Phone 8.1 如何使用Zxing制作二维码图片
How to create a QR code image using Zxing on Windows Phone 8.1
我一直在网上搜索 Windows Phone 8.1 中使用 Zxing 的代码示例,但没有找到。我正在用 C# 编写,下面是我的代码,到目前为止我已经想出了这些代码:
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: Object reference not set to an instance of an object." 错误,我认为这是在我尝试将呈现的 QR 码转换为 byte[] 时发生的。
如有任何帮助,我将不胜感激,谢谢
使用
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;
更简单和有效(在我的一个应用程序中测试)
我一直在网上搜索 Windows Phone 8.1 中使用 Zxing 的代码示例,但没有找到。我正在用 C# 编写,下面是我的代码,到目前为止我已经想出了这些代码:
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: Object reference not set to an instance of an object." 错误,我认为这是在我尝试将呈现的 QR 码转换为 byte[] 时发生的。
如有任何帮助,我将不胜感激,谢谢
使用
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;
更简单和有效(在我的一个应用程序中测试)