asp.net 生成二维码代码:
其实呢csdn上面有很多的,甚至连整个项目都有。那么我为什么要在写呢呵呵,可能只是觉得可能有像我这样需求的人,但是要不想在去弄的,或者知道弄却不想去查。
其实我也是用 “ThoughtWorks.QRCode.dll”这个去生成了,因为生成的二维码图片边框太窄发送到客户手机pos设备无法读取。 所以后面就放弃用 “ThoughtWorks.QRCode.dll” 用了谷歌的外网的的连接生成了,发现生成的图片很正规。本想着完成了任务了,可是突然想要是服务器无法上网呢? 这才想在用回 “ThoughtWorks.QRCode.dll” 组件生成(没有办法本人懒不想在查其他的)。所以在生成出来的图片加了边框就好了!至于ThoughtWorks.QRCode.dll 这个控件,网上应该有下载把!代码如下:
/// 生成二维码(利用dll)
/// </summary>
/// <param name="data">生成二维码数据</param>
/// <param name="filename">图片名称</param>
private void createcode(string data,string filename)
{
//Image1.ImageUrl = "Qcodeimage.aspx?strs="+data;
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
qrCodeEncoder.QRCodeScale = 3;
qrCodeEncoder.QRCodeVersion = 8;
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
//String data = "12345678abcdeftlljws#你好";
System.Drawing.Bitmap image = qrCodeEncoder.Encode(data);
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(image.Width + 30, image.Height + 30);//这里是背景图片
//bmp.SetPixel(0, 0, Color.White);
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmp);
g.Clear(Color.White);//把背景图片换成白色
g.DrawImage(image, new Rectangle(15, 15, image.Width+5, image.Height+5), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel);//Rectangle为 15距离顶部和 15左边的距离。
System.IO.MemoryStream MStream = new System.IO.MemoryStream();
bmp.Save(MStream, System.Drawing.Imaging.ImageFormat.Gif);
//為了callBack而callBack的寫法
System.Drawing.Image.GetThumbnailImageAbort callBack =
new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
// 計算維持比例的縮圖大小
int[] thumbnailScale = this.getThumbPic_WidthAndHeight(bmp, 300);
// 產生縮圖
System.Drawing.Image smallImage =
bmp.GetThumbnailImage(thumbnailScale[0], thumbnailScale[1], callBack, IntPtr.Zero);
Byte[] imgbyte = MStream.ToArray();//这个就是将图片转换为二进制数据,然后就可以通过socket发送了
if (Common.DirExists("Qcode"))//这个是检查目录是否存在这个方法我另一个文件中 这里不贴出
{
string filepath = Server.MapPath("Qcode");
smallImage.Save(filepath + "\\" + filename, System.Drawing.Imaging.ImageFormat.Jpeg);
}
}