public async static Task <Uri> ToQrDataUri(this ISdp sdp, int width, int height) { var qrCodeWriter = new QRCodeWriter(); var bitMatrix = qrCodeWriter.encode(sdp.ToString(), ZXing.BarcodeFormat.QR_CODE, width, height); using (var canvasRenderTarget = new CanvasRenderTarget(CanvasDevice.GetSharedDevice(), 500, 500, 96)) { using (var drawingSession = canvasRenderTarget.CreateDrawingSession()) { for (var y = 0; y < height; y++) { for (var x = 0; x < width; x++) { drawingSession.DrawRectangle(x, y, 1, 1, bitMatrix.get(x, y) ? Color.FromArgb(0, 0, 0, 0) : Color.FromArgb(255, 255, 255, 255)); } } } using (var inMemoryRandomAccessStream = new InMemoryRandomAccessStream()) { await canvasRenderTarget.SaveAsync(inMemoryRandomAccessStream, CanvasBitmapFileFormat.Png); inMemoryRandomAccessStream.Seek(0); var buffer = new byte[inMemoryRandomAccessStream.Size]; await inMemoryRandomAccessStream.ReadAsync(buffer.AsBuffer(), (uint)inMemoryRandomAccessStream.Size, InputStreamOptions.None); return(new Uri($"data:image/png;base64,{Convert.ToBase64String(buffer)}")); } } }
public void Visit(ISdp sdp) { sdp.Visit(0, _member_name_[0], false, ref iValue); sdp.Visit(1, _member_name_[1], false, ref strValue); sdp.Visit(2, _member_name_[2], false, Values); sdp.Visit(233, _member_name_[3], false, KeyValues); }
public static ImageSource ToQrImageSource(this ISdp sdp, int width, int height) { var qrCodeWriter = new QRCodeWriter(); var bitMatrix = qrCodeWriter.encode(sdp.ToString(), ZXing.BarcodeFormat.QR_CODE, width, height); var canvasImageSource = new CanvasImageSource(CanvasDevice.GetSharedDevice(), width, height, 96); using (var drawingSession = canvasImageSource.CreateDrawingSession(Color.FromArgb(255, 255, 255, 255))) { for (var y = 0; y < height; y++) { for (var x = 0; x < width; x++) { if (bitMatrix.get(x, y)) { drawingSession.DrawRectangle(x, y, 1, 1, Color.FromArgb(255, 0, 0, 0)); } } } } return(canvasImageSource); }