using NPOI.OpenXmlFormats.Shared; using System; using System.IO; using System.Text; using ThoughtWorks.QRCode.Codec; using QRCoder; namespace BLL { /// /// 上传附件相关 /// public class CreateQRCodeService { /// /// 生成二维码方法一 /// public static string CreateCode_Simple(string nr) { try { string imageUrl = string.Empty; if (!string.IsNullOrEmpty(nr)) { QRCodeEncoder qrCodeEncoder = new QRCodeEncoder { QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE, QRCodeScale = nr.Length, QRCodeVersion = 0, QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M }; System.Drawing.Image image = qrCodeEncoder.Encode(nr, Encoding.UTF8); string filepath = Funs.RootPath + UploadFileService.QRCodeImageFilePath; //如果文件夹不存在,则创建 if (!Directory.Exists(filepath)) { Directory.CreateDirectory(filepath); } string filename = DateTime.Now.ToString("yyyymmddhhmmssfff").ToString() + ".jpg"; FileStream fs = new FileStream(filepath + filename, FileMode.OpenOrCreate, FileAccess.Write); image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg); fs.Close(); image.Dispose(); imageUrl = UploadFileService.QRCodeImageFilePath + filename; } return imageUrl; } catch (Exception ex) { ErrLogInfo.WriteLog(ex, "二维码生成" + nr, "CreateQRCodeService.CreateCode_Simple"); return null; } } /* public Bitmap GetGraphic(int pixelsPerModule, Color darkColor, Color lightColor, [Bitmap icon=null], [int iconSizePercent=15], [int iconBorderWidth=6], [bool drawQuietZones=true]) int pixelsPerModule:生成二维码图片的像素大小; Color darkColor:二维码图像暗色,一般设置为Color.Black。 Color lightColor:二维码图像亮色, 一般设置为Color.White。 Bitmap icon:二维码中间水印图标。 int iconSizePercent:水印图标的大小比例。 int iconBorderWidth:水印图标的边框。不能设为0,否则会显示“参数错误”,程序运行出错。 bool drawQuietZones:静止区,即是否绘画二维码的空白边框区域,默认为true。 */ public static string CreateCode_Simple(string nr,string filename) { try { string imageUrl = string.Empty; if (!string.IsNullOrEmpty(nr)) { //QRCodeEncoder qrCodeEncoder = new QRCodeEncoder //{ // QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE, // QRCodeScale = nr.Length, // QRCodeVersion =0, // QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M //}; //System.Drawing.Image image = qrCodeEncoder.Encode(nr, Encoding.UTF8); QRCoder.QRCode qRCode = new QRCoder.QRCode(); QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(nr, QRCodeGenerator.ECCLevel.Q); QRCode qrcode = new QRCode(qrCodeData); System.Drawing.Image image = qrcode.GetGraphic(100); string filepath = Funs.RootPath + UploadFileService.QRCodeImageFilePath; //如果文件夹不存在,则创建 if (!Directory.Exists(filepath)) { Directory.CreateDirectory(filepath); } // string filename = DateTime.Now.ToString("yyyymmddhhmmssfff").ToString() + ".jpg"; filename = filename + ".jpg"; //if (File.Exists(filepath + filename)) //{ // File.Delete(filepath + filename); //} FileStream fs = new FileStream(filepath + filename, FileMode.OpenOrCreate, FileAccess.Write); image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg); fs.Close(); image.Dispose(); imageUrl = UploadFileService.QRCodeImageFilePath + filename; } return imageUrl; } catch (Exception ex) { ErrLogInfo.WriteLog(ex, "二维码生成" + nr, "CreateQRCodeService.CreateCode_Simple"); return null; } } /// /// /// /// public static bool isHaveImage(string url) { string filepath = Funs.RootPath + url; return File.Exists(filepath); } } }