引入第三方依赖包

  <ItemGroup>
    <PackageReference Include="System.Drawing.Common" Version="9.0.7" />
    <PackageReference Include="ZXing.Net" Version="0.16.10" />
  </ItemGroup>


using ZXing;
using ZXing.Common;
using System.Drawing;
using System.Drawing.Imaging;


/// <summary>
        /// 生成条形码保存为图片
        /// </summary>
        /// <param name="barcodeText"></param>

        public static string GenerateBarcode(string barcodeText)
        {
            if (string.IsNullOrEmpty(barcodeText))
            {
                return "";
            }
            string imagePath = "temp/" + barcodeText + "_" + DateTime.Now.Ticks + ".png";
            // 创建一个条形码写入器
            var writer = new ZXing.BarcodeWriterPixelData
            {
                Format = ZXing.BarcodeFormat.CODE_39,
                Options = new EncodingOptions
                {
                    Height = 40, // 高度
                    Width = 200,    // 宽度
                    PureBarcode = false // 是否只包含条形码部分,不包含空白边距
                }
            };

            // 生成条形码图像数据
            var pixelData = writer.Write(barcodeText);

            // 将图像数据转换为Bitmap并保存为文件
            using (var bitmap = new Bitmap(pixelData.Width, pixelData.Height))
            {
                var bitmapData = bitmap.LockBits(new Rectangle(0, 0, pixelData.Width, pixelData.Height), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
                var bytes = new byte[pixelData.Pixels.Length];
                Buffer.BlockCopy(pixelData.Pixels, 0, bytes, 0, bytes.Length);
                Marshal.Copy(bytes, 0, bitmapData.Scan0, bytes.Length);
                bitmap.UnlockBits(bitmapData);

                bitmap.Save(imagePath, ImageFormat.Png);
            }
            return imagePath;
        }

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐