当前位置:   article > 正文

利用ZXing.Net生成二维码,支持带logo二维码_zxing生成二维码

zxing生成二维码

       二维码作为一种能携带很多信息的图片,在很多场景都有使用。常见的支付码、微信个人二维码等等。在医疗场景中也有一些使用,例如处方单、报告单上放置一个二维码,可以扫码查看电子处方单、电子报告等。

       用ZXing.Net第三方组件实现生成和解析二维码,同时支持带logo形式的二维码,话不多说,直接上代码。

  1. public class QRCodeHelper
  2. {
  3. /// <summary>
  4. /// 使用zxing动态库生成二维码
  5. /// </summary>
  6. /// <param name="conetnt">二维码内容</param>
  7. /// <param name="errorMessage">异常信息</param>
  8. /// <param name="logoPath">logo图片路径,默认为空。为空时生成的二维码不带logo</param>
  9. /// <param name="height">二维码图片高度,默认240 单位 pixels</param>
  10. /// <param name="width">二维码图片宽度,默认240 单位 pixels</param>
  11. /// <param name="margin">二维码图片边距,默认为0</param>
  12. /// <returns></returns>
  13. public static Bitmap GenerateQRCode(string conetnt, out string errorMessage, string logoPath = "", int height = 240, int width = 240, int margin = 0)
  14. {
  15. errorMessage = string.Empty;
  16. try
  17. {
  18. BarcodeWriter barCodeWriter = new BarcodeWriter();
  19. barCodeWriter.Format = BarcodeFormat.QR_CODE;
  20. barCodeWriter.Options.Hints.Add(EncodeHintType.CHARACTER_SET, "UTF-8");
  21. barCodeWriter.Options.Hints.Add(EncodeHintType.ERROR_CORRECTION, ZXing.QrCode.Internal.ErrorCorrectionLevel.H);
  22. barCodeWriter.Options.Height = height;
  23. barCodeWriter.Options.Width = width;
  24. barCodeWriter.Options.Margin = margin;
  25. BitMatrix bm = barCodeWriter.Encode(conetnt);
  26. Bitmap qrCodeImage = barCodeWriter.Write(bm);
  27. if (!string.IsNullOrEmpty(logoPath))
  28. {
  29. // 添加Logo
  30. Bitmap logo = new Bitmap(logoPath);
  31. int logoSize = (int)(qrCodeImage.Width * 0.2); // Logo大小为二维码大小的1/5
  32. int logoX = (qrCodeImage.Width - logoSize) / 2;
  33. int logoY = (qrCodeImage.Height - logoSize) / 2;
  34. Graphics qrGraphics = Graphics.FromImage(qrCodeImage);
  35. qrGraphics.DrawImage(logo, new Rectangle(logoX, logoY, logoSize, logoSize));
  36. }
  37. return qrCodeImage;
  38. }
  39. catch (Exception ex)
  40. {
  41. errorMessage = $"Exception raised when generating QRCode,, Exception;{ex}";
  42. return null;
  43. }
  44. }
  45. /// <summary>
  46. /// 使用zxing动态库解析
  47. /// </summary>
  48. /// <param name="image">二维码图像</param>
  49. /// <returns></returns>
  50. public static string ParseBarCode(Bitmap image)
  51. {
  52. BarcodeReader reader = new BarcodeReader();
  53. Result result = reader.Decode(image);
  54. return result.Text;
  55. }
  56. }

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号