二维码
using Gma.QrCodeNet.Encoding;
using Gma.QrCodeNet.Encoding.Windows.Render;
string str = "Http://www.baidu.com";
QrEncoder encoder = new Gma.QrCodeNet.Encoding.QrEncoder(); QrCode code; encoder.TryEncode(str, out code); //生成图片 GraphicsRenderer renderer = new GraphicsRenderer(new FixedModuleSize(5, QuietZoneModules.Zero), new SolidBrush(Color.Black), new SolidBrush(Color.White)); //将生成的图片写入输出流中 renderer.WriteToStream(code.Matrix, ImageFormat.Jpeg, context.Response.OutputStream);
-----------------------------------------------------------------------------------------------------------
条形码
namespace Barcode
{ using System.Collections; using System.Drawing;public class CodeUtility
{ #region Public Methods and Operators/// <summary>
/// 获取 39 码(HTML 版) /// </summary> /// <param name="s">欲编码的字符串</param> /// <param name="width">单个条形宽(px)</param> /// <param name="height">条形高(px)</param> /// <returns></returns> public static string GetCode(string s, int width, int height) { var ht = new Hashtable();#region 39码 12位
ht.Add('A', "110101001011");
ht.Add('B', "101101001011"); ht.Add('C', "110110100101"); ht.Add('D', "101011001011"); ht.Add('E', "110101100101"); ht.Add('F', "101101100101"); ht.Add('G', "101010011011"); ht.Add('H', "110101001101"); ht.Add('I', "101101001101"); ht.Add('J', "101011001101"); ht.Add('K', "110101010011"); ht.Add('L', "101101010011"); ht.Add('M', "110110101001"); ht.Add('N', "101011010011"); ht.Add('O', "110101101001"); ht.Add('P', "101101101001"); ht.Add('Q', "101010110011"); ht.Add('R', "110101011001"); ht.Add('S', "101101011001"); ht.Add('T', "101011011001"); ht.Add('U', "110010101011"); ht.Add('V', "100110101011"); ht.Add('W', "110011010101"); ht.Add('X', "100101101011"); ht.Add('Y', "110010110101"); ht.Add('Z', "100110110101"); ht.Add('0', "101001101101"); ht.Add('1', "110100101011"); ht.Add('2', "101100101011"); ht.Add('3', "110110010101"); ht.Add('4', "101001101011"); ht.Add('5', "110100110101"); ht.Add('6', "101100110101"); ht.Add('7', "101001011011"); ht.Add('8', "110100101101"); ht.Add('9', "101100101101"); ht.Add('+', "100101001001"); ht.Add('-', "100101011011"); ht.Add('*', "100101101101"); ht.Add('/', "100100101001"); ht.Add('%', "101001001001"); ht.Add('$', "100100100101"); ht.Add('.', "110010101101"); ht.Add(' ', "100110101101");#endregion
#region 39码 9位
//ht.Add('0', "000110100");
//ht.Add('1', "100100001"); //ht.Add('2', "001100001"); //ht.Add('3', "101100000"); //ht.Add('4', "000110001"); //ht.Add('5', "100110000"); //ht.Add('6', "001110000"); //ht.Add('7', "000100101"); //ht.Add('8', "100100100"); //ht.Add('9', "001100100"); //ht.Add('A', "100001001"); //ht.Add('B', "001001001"); //ht.Add('C', "101001000"); //ht.Add('D', "000011001"); //ht.Add('E', "100011000"); //ht.Add('F', "001011000"); //ht.Add('G', "000001101"); //ht.Add('H', "100001100"); //ht.Add('I', "001001100"); //ht.Add('J', "000011100"); //ht.Add('K', "100000011"); //ht.Add('L', "001000011"); //ht.Add('M', "101000010"); //ht.Add('N', "000010011"); //ht.Add('O', "100010010"); //ht.Add('P', "001010010"); //ht.Add('Q', "000000111"); //ht.Add('R', "100000110"); //ht.Add('S', "001000110"); //ht.Add('T', "000010110"); //ht.Add('U', "110000001"); //ht.Add('V', "011000001"); //ht.Add('W', "111000000"); //ht.Add('X', "010010001"); //ht.Add('Y', "110010000"); //ht.Add('Z', "011010000"); //ht.Add('-', "010000101"); //ht.Add('.', "110000100"); //ht.Add(' ', "011000100"); //ht.Add('*', "010010100"); //ht.Add('$', "010101000"); //ht.Add('/', "010100010"); //ht.Add('+', "010001010"); //ht.Add('%', "000101010");#endregion
s = "*" + s.ToUpper() + "*";
string result_bin = ""; // 二进制串
string split = "0"; // 间隔,与一个单位的线条宽度相等try
{ foreach (char ch in s) { result_bin += ht[ch].ToString(); result_bin += split; } } catch { return "存在不允许的字符!"; }string result_html = ""; // HTML代码
string color = ""; // 颜色 foreach (char c in result_bin) { color = c == '0' ? "#FFFFFF" : "#000000"; result_html += "<div style=\"width:" + width + "px;height:" + height + "px;float:left;background:" + color + ";\"></div>"; } result_html += "<div style=\"clear:both\"></div>";int len = ht['*'].ToString().Length;
foreach (char c in s) { result_html += "<div style=\"width:" + (width * (len + split.Length)) + "px;float:left;color:#000000;text-align:center;\">" + c + "</div>"; } result_html += "<div style=\"clear:both\"></div>";return "<div style=\"background:#FFFFFF;padding:5px;font-size:" + (width * 10) + "px;font-family:'楷体';\">"
+ result_html + "</div>"; }#endregion
public static Bitmap GetCode39(string sourceCode)
{ int leftMargin = 5; int topMargin = 0; int thickLength = 2; int narrowLength = 1; int barCodeHeight = 35; int intSourceLength = sourceCode.Length; string strEncode = "010010100"; //添加起始码“*”. var font = new System.Drawing.Font("Segoe UI", 5);string AlphaBet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%*";
string[] Code39 =
{ /* 0 */ "000110100", /* 1 */ "100100001", /* 2 */ "001100001", /* 3 */ "101100000", /* 4 */ "000110001", /* 5 */ "100110000", /* 6 */ "001110000", /* 7 */ "000100101", /* 8 */ "100100100", /* 9 */ "001100100", /* A */ "100001001", /* B */ "001001001", /* C */ "101001000", /* D */ "000011001", /* E */ "100011000", /* F */ "001011000", /* G */ "000001101", /* H */ "100001100", /* I */ "001001100", /* J */ "000011100", /* K */ "100000011", /* L */ "001000011", /* M */ "101000010", /* N */ "000010011", /* O */ "100010010", /* P */ "001010010", /* Q */ "000000111", /* R */ "100000110", /* S */ "001000110", /* T */ "000010110", /* U */ "110000001", /* V */ "011000001", /* W */ "111000000", /* X */ "010010001", /* Y */ "110010000", /* Z */ "011010000", /* - */ "010000101", /* . */ "110000100", /*' '*/ "011000100", /* $ */ "010101000", /* / */ "010100010", /* + */ "010001010", /* % */ "000101010", /* * */ "010010100" }; sourceCode = sourceCode.ToUpper();Bitmap objBitmap =
new Bitmap( ((thickLength * 3 + narrowLength * 7) * (intSourceLength + 2)) + (leftMargin * 2), barCodeHeight + (topMargin * 2)); Graphics objGraphics = Graphics.FromImage(objBitmap);objGraphics.FillRectangle(Brushes.White, 0, 0, objBitmap.Width, objBitmap.Height);
for (int i = 0; i < intSourceLength; i++)
{ //非法字符校验 if (AlphaBet.IndexOf(sourceCode[i]) == -1 || sourceCode[i] == '*') { objGraphics.DrawString( "Invalid Bar Code", SystemFonts.DefaultFont, Brushes.Red, leftMargin, topMargin); return objBitmap; } //编码 strEncode = string.Format("{0}0{1}", strEncode, Code39[AlphaBet.IndexOf(sourceCode[i])]); }strEncode = string.Format("{0}0010010100", strEncode); //添加结束码“*”
int intEncodeLength = strEncode.Length;
int intBarWidth;for (int i = 0; i < intEncodeLength; i++) //绘制 Code39 barcode
{ intBarWidth = strEncode[i] == '1' ? thickLength : narrowLength; objGraphics.FillRectangle( i % 2 == 0 ? Brushes.Black : Brushes.White, leftMargin, topMargin, intBarWidth, barCodeHeight); leftMargin += intBarWidth; }//绘制 明码
SizeF sizeF = objGraphics.MeasureString(sourceCode, font); float x = (objBitmap.Width - sizeF.Width) / 2; float y = objBitmap.Height - sizeF.Height; objGraphics.FillRectangle(Brushes.White, x, y, sizeF.Width, sizeF.Height); objGraphics.DrawString(sourceCode, font, Brushes.Black, x, y);return objBitmap;
} }}