条码生成器
/// <summary>
/// 条码生成器
/// </summary>
public class CodeCreater
{
public CodeCreater()
{
optionsQR = new QrCodeEncodingOptions()
{
DisableECI = true,
CharacterSet = "UTF-8",
Width = 120,
Height = 120
};
optionsBR = new EncodingOptions()
{
Width = 300,
Height = 80
};
this.Init();
}
public CodeCreater(int widthQR, int heightQR, int widthBR, int heightBR, string charEncodeing)
{
optionsQR = new QrCodeEncodingOptions()
{
DisableECI = true,
CharacterSet = charEncodeing,
Width = widthQR,
Height = heightQR
};
optionsBR = new EncodingOptions()
{
Width = widthBR,
Height = heightBR
};
this.Init();
}
private void Init()
{
writerQR.Format = BarcodeFormat.QR_CODE;
writerQR.Options = optionsQR;
writerBR.Format = BarcodeFormat.CODE_128;
writerBR.Options = optionsBR;
}
private EncodingOptions optionsQR;
private EncodingOptions optionsBR;
BarcodeWriter writerQR = new BarcodeWriter();
BarcodeWriter writerBR = new BarcodeWriter();
BarcodeReader reader = new BarcodeReader();
/// <summary>
/// 生成码类型,二维码,条码
/// </summary>
public enum CodeType
{
/// <summary>
/// 二维码
/// </summary>
QR_CODE,
/// <summary>
/// 条码 默认CODE_39
/// </summary>
BarCode
}
/// <summary>
/// 生成二维码
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public Bitmap EncodingQR(string info)
{
BitMatrix m = new MultiFormatWriter().encode(info, BarcodeFormat.QR_CODE, writerQR.Options.Width, writerQR.Options.Height);
int[] rect = m.getEnclosingRectangle();
Bitmap bpS = writerQR.Write(info);
Bitmap bpD = new Bitmap(writerQR.Options.Width - rect[0] * 2, writerQR.Options.Height - rect[0] * 2, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
for (int x = 0; x < bpD.Width; x++)
{
for (int y = 0; y < bpD.Height; y++)
{
bpD.SetPixel(x, y, bpS.GetPixel(x + rect[0], y + rect[0]));
}
}
return ZoomPic(bpD, writerQR.Options.Width);
}
/// <summary>
/// 按比例缩小图片,自动计算高度
/// </summary>
/// <param name="strOldPic">源图文件)</param>
/// <param name="intWidth">缩小至宽度</param>
public Bitmap ZoomPic(Bitmap objPic, int intWidth)
{
System.Drawing.Bitmap objNewPic;
int intHeight = (int)(((float)intWidth / objPic.Width) * objPic.Height);
objNewPic = new System.Drawing.Bitmap(objPic, intWidth, intHeight);
return objNewPic;
}
/// <summary>
/// 生成条码 CODE_39
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public Bitmap EncodingBR(string info)
{
return writerBR.Write(info);
}
/// <summary>
/// 解码
/// </summary>
/// <param name="mp">图片</param>
/// <returns></returns>
public string DeEnconding(Bitmap mp)
{
Result rt = reader.Decode(mp);
if (rt.Text != "")
{
return rt.Text;
}
else
{
return string.Empty;
}
}
public byte[] ConvertImageToByte(Image im)
{
System.IO.MemoryStream ms = new System.IO.MemoryStream();
im.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
return ms.ToArray();
}
}