当前位置:   article > 正文

unity使用Zxing的.net库搞二维码与条形码的事_unity生成条形码

unity生成条形码



前端时间,我们的3D 配送仿真系统需要与公司的配送管理系统对接,其中有一个小功能就是当 3D 中货物订单生成后,需要用一个外设来录入,这个外设叫手持设备,如下图,


刚看到这玩意我是懵逼的,网上一查这玩意根据你买的不同可运行javaandroidwindows等,那仔细一想,不就是两个系统之间的数据传递了,数据的中转我们用mysql就行。大致原理如下:

1Unity3D物体发生变化导致订单随之变化并生成条形码。

2、手持通过扫描条形码展示相对应的订单信息

3、找到核心,其实就是订单ID

4unity货物变化后立马更新订单表,并根据订单ID生成条形码,随后手持设备扫描条形码得到订单ID,根据ID在数据库中去关联你想要展示的数据即可。

这是一个扩展应用,没有很大的难度,只需要搞清楚zxing库的原理以及你需求实现的思路就行。

步骤如下

1、zxing.dll放入工程plugins下。

2、复制当前unity版本安装目录下的System.Drawing.dll也放入plugins目录下。必须是当前版本,否则崩溃的你找不到东南西北。

3、调用ZXingUitil类中的QrCreat方法即可返回条形码的texture

4、得到Texture后你想咋搞就咋搞,GUINGUIUGUI为你所用。

效果如下图:

代码如下:

  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Drawing;
  4. using ZXing.QrCode;
  5. using ZXing;
  6. using ZXing.Common;
  7. using ZXing.Rendering;
  8. using ZXing.QrCode.Internal;
  9. using System;
  10. /// <summary>
  11. /// zxing 工具类,用来生成订单信息条形码
  12. /// 李佼
  13. /// </summary>
  14. public class ZXingUitil : MonoBehaviour
  15. {
  16. private int _width = 370;
  17. private int _height = 100;
  18. private Texture2D _texure2d;
  19. private bool _success;
  20. public static ZXingUitil instance;
  21. EncodingOptions options = null;
  22. BarcodeWriter writer = null;
  23. void Awake()
  24. {
  25. instance = this;
  26. }
  27. void Start()
  28. {
  29. _texure2d = new Texture2D(_width, _height);
  30. options = new EncodingOptions
  31. {
  32. Width = _width,
  33. Height = _height
  34. };
  35. writer = new BarcodeWriter();
  36. writer.Format = BarcodeFormat.ITF;
  37. writer.Options = options;
  38. }
  39. /// <summary>
  40. /// 传入条形码内容 返回条码图,条形码须为偶数位
  41. /// </summary>
  42. /// <param name="barcode"></param>
  43. /// <returns></returns>
  44. public Texture2D QrCreat(string barcode)
  45. {
  46. try
  47. {
  48. Bitmap bitmap = writer.Write(barcode);
  49. _texure2d.LoadImage(ImageToByte(bitmap));
  50. return _texure2d;
  51. }
  52. catch (Exception e)
  53. {
  54. Debug.LogError("z xing error");
  55. return null;
  56. }
  57. }
  58. public Texture2D QrCreat(string barcode, Vector2 imageVec)
  59. {
  60. _texure2d = new Texture2D((int)imageVec.x, (int)imageVec.y);
  61. Bitmap bitmap = writer.Write(barcode);
  62. _texure2d.LoadImage(ImageToByte(bitmap));
  63. return _texure2d;
  64. }
  65. private byte[] ImageToByte(Image img)
  66. {
  67. ImageConverter converter = new ImageConverter();
  68. return (byte[])converter.ConvertTo(img, typeof(byte[]));
  69. }
  70. }


本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/715831
推荐阅读
相关标签
  

闽ICP备14008679号