Elight.Utility/Files/QRCodeUtils.cs
(开头部分) 2KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Text;
using ZXing;
using ZXing.Common;
using ZXing.QrCode.Internal;
namespace Elight.Utility.Files
{
public class QRCodeUtils
{
/// <summary>
///
/// </summary>
/// <param name="msg">二维码内容</param>
/// <param name="codeSizeInPixels">图片长宽</param>
/// <returns></returns>
public static Bitmap EncodeQrCode(string msg, int codeSizeInPixels)
{
Dictionary<EncodeHintType, object> hints = new Dictionary<EncodeHintType, object>();
hints.Add(EncodeHintType.CHARACTER_SET, "utf-8");
hints.Add(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
hints.Add(EncodeHintType.MARGIN, 1);
//msg = Encoding.Unicode.GetString(Encoding.UTF8.GetBytes(msg));
BitMatrix matrix = new MultiFormatWriter().encode(msg, BarcodeFormat.QR_CODE, codeSizeInPixels, codeSizeInPixels, hints);
matrix = deleteWhite(matrix);//删除白边
Bitmap bmap = new Bitmap(matrix.Width, matrix.Height, PixelFormat.Format32bppArgb);
for (int x = 0; x < matrix.Width; x++)
{
for (int y = 0; y < matrix.Height; y++)
{
if (matrix[x, y])
bmap.SetPixel(x, y, Color.Black);
}
}
return bmap;
}
/// <summary>
/// 去除白边
/// </summary>
/// <param name="matrix"></param>
/// <returns></returns>
private static BitMatrix deleteWhite(BitMatrix matrix)
{
int[] rec = matrix.getEnclosingRectangle();
int resWidth = rec[2] + 1;
int resHeight = rec[3] + 1;
BitMatrix resMatrix = new BitMatrix(resWidth, resHeight);
resMatrix.clear();
for (int i = 0; i < resWidth; i++)
{
for (int j = 0; j < resHeight; j++)
{
if (matrix[i + rec[0], j + rec[1]])
resMatrix[i, j] = true;
}
后面还有 30 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。