public IActionResult GetQrCode(int busId) { var busName = busService.GetBus(busId).BusName; var qrCodeContent = new QrCodeContent { BusName = busName, BusId = busId }; return(Ok(qrCodeService.GenerateQrCodeImage(qrCodeContent))); }
public PictureViewModel GenerateQrCodeImage(QrCodeContent qrCodeContent) { var width = 250; var height = 250; var margin = 0; var qrCodeWriter = new BarcodeWriterPixelData() { Format = BarcodeFormat.QR_CODE, Options = new QrCodeEncodingOptions() { Height = height, Width = width, Margin = margin } }; var pixelData = qrCodeWriter.Write($"{(env.IsDevelopment() ? Constants.QrUrlDevelopment : Constants.QrUrl)}/traveling/{qrCodeContent.BusId}"); var picture = new PictureViewModel(); picture.Name = $"Qr code for {qrCodeContent.BusName}"; picture.MediaType = "image/jpg"; picture.Type = "File"; using (var bitmap = new Bitmap(pixelData.Width, pixelData.Height, PixelFormat.Format32bppRgb)) { using (var ms = new MemoryStream()) { var bitmapData = bitmap.LockBits(new Rectangle(0, 0, pixelData.Width, pixelData.Height), ImageLockMode.WriteOnly, PixelFormat.Format32bppRgb); try { Marshal.Copy(pixelData.Pixels, 0, bitmapData.Scan0, pixelData.Pixels.Length); } finally { bitmap.UnlockBits(bitmapData); } bitmap.Save(ms, ImageFormat.Png); picture.Value = Convert.ToBase64String(ms.ToArray()); } } return(picture); }