SGGL_SHJ/SGGL/BLL/Common/CreateQRCodeService.cs

122 lines
5.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using NPOI.OpenXmlFormats.Shared;
using System;
using System.IO;
using System.Text;
using ThoughtWorks.QRCode.Codec;
using QRCoder;
namespace BLL
{
/// <summary>
/// 上传附件相关
/// </summary>
public class CreateQRCodeService
{
/// <summary>
/// 生成二维码方法一
/// </summary>
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;
}
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public static bool isHaveImage(string url)
{
string filepath = Funs.RootPath + url;
return File.Exists(filepath);
}
}
}