/// <summary>
/// 生成二维码
/// </summary>
/// <param name="content">展示内容(文本内容 或者 扫描后的跳转http://格式的地址)</param>
/// <param name="savePath">保存二维码的磁盘路径(默认程序跟目录+QRCode)</param>
/// <param name="logoUrl"> Logo图标地址(格式:http://),(注:google接口暂未研究出此参数)</param>
/// <param name="apiUrl">接口地址(内置默认api地址)</param>
/// <param name="wAndh">宽度和高度(二维码正方形的,高宽一至,默认200)</param>
/// <returns></returns>
public virtual string CreateQRCode(string content = null, string savePath = null, string logoUrl = null, string apiUrl = null, int? wAndh = null)
{
var qrName = string.Empty;
#region 参数初始化
ApiUrl = apiUrl ?? ApiUrl;
Content = content ?? Content;
SaveQRPath = savePath ?? SaveQRPath;
LogoUrl = logoUrl ?? LogoUrl;
WAndH = wAndh ?? WAndH;
#endregion
if (string.IsNullOrEmpty(ApiUrl)) { return qrName; }
ApiUrl = string.Format("{0}?cht=qr&chl={1}&chs={2}x{2}",
ApiUrl,
HttpUtility.UrlEncode(Content),
WAndH);
qrName = DownImg(ApiUrl, SaveQRPath, ImageFormat.Jpeg);
return qrName;
}
#endregion
#region 下载图片
/// <summary>
/// 下载图片
/// </summary>
/// <param name="url">图片下载地址</param>
/// <param name="savePath">保存路径默认:Img文件夹</param>
/// <param name="format">默认:Jpeg</param>
/// <returns>新图片名称</returns>
public virtual string DownImg(string url, string savePath = "QRCode", ImageFormat format = null)
{
var qrName = string.Empty;
try
{
format = format ?? ImageFormat.Jpeg;
HttpClient http = new HttpClient();
http.Timeout = new TimeSpan(0, 1, 0);
using (var stream = http.GetStreamAsync(url).Result)
{
if (!Directory.Exists(SaveQRPath)) { Directory.CreateDirectory(SaveQRPath); }
qrName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "." + format;
var path = Path.Combine(savePath, qrName);
using (Image img = Image.FromStream(stream))
{
img.Save(path, format);
}
}
}
catch (Exception ex)
{
qrName = string.Empty;
}
return qrName;
}
#endregion
public QR_2dCode()
{
ApiUrl = "http://www.2d-code.cn/2dcode/api.php";
}
#region 生成二维码
/// <summary>
/// 生成二维码
/// </summary>
/// <param name="content">展示内容(文本内容 或者 扫描后的跳转http://格式的地址)</param>
/// <param name="savePath">保存二维码的磁盘路径(默认程序跟目录+QRCode)</param>
/// <param name="logoUrl"> Logo图标地址(格式:http://),官方不建议使用png格式,测试只有jpg成功</param>
/// <param name="directUrl">扫描后重定向地址(http://)</param>
/// <param name="apiUrl">接口地址(内置默认api地址)</param>
/// <param name="wAndh">宽度和高度(二维码正方形的,高宽一至,默认200)</param>
/// <returns></returns>
public override string CreateQRCode(string content = null, string savePath = null, string logoUrl = null, string apiUrl = null, int? wAndh = null)
{
var qrName = string.Empty;
#region 参数初始化
ApiUrl = apiUrl ?? ApiUrl;
Content = content ?? Content;
SaveQRPath = savePath ?? SaveQRPath;
LogoUrl = logoUrl ?? LogoUrl;
WAndH = wAndh ?? WAndH;
#endregion
if (string.IsNullOrEmpty(ApiUrl)) { return qrName; }
ApiUrl = string.Format("{0}?key=c_d800OBbu6hDzJtXPE2Yd02IMtmpuK9VdCqHe6vrtar4&text={1}&url={2}&logo={3}&size={4}",
ApiUrl,
HttpUtility.UrlEncode(Content.Contains("http") ? "" : Content),
HttpUtility.UrlEncode(Content),
HttpUtility.UrlEncode(LogoUrl),
WAndH);
qrName = DownImg(ApiUrl, SaveQRPath);
return qrName;
}
#endregion
public QR_TopScan()
{
ApiUrl = "http://qr.topscan.com/api.php";
}
#region 生成二维码
/// <summary>
/// 生成二维码
/// </summary>
/// <param name="content">展示内容(文本内容 或者 扫描后的跳转http://格式的地址)</param>
/// <param name="savePath">保存二维码的磁盘路径(默认程序跟目录+QRCode)</param>
/// <param name="logoUrl"> Logo图标地址(格式:http://),jpg,png测试通过,测试得出有不能成功的,原因不知是否和地址有关</param>
/// <param name="apiUrl">接口地址(内置默认api地址)</param>
/// <param name="wAndh">宽度和高度(二维码正方形的,高宽一至,默认200)</param>
/// <returns></returns>
public override string CreateQRCode(string content = null, string savePath = null, string logoUrl = null, string apiUrl = null, int? wAndh = null)
{
var qrName = string.Empty;
#region 参数初始化
ApiUrl = apiUrl ?? ApiUrl;
Content = content ?? Content;
SaveQRPath = savePath ?? SaveQRPath;
LogoUrl = logoUrl ?? LogoUrl;
WAndH = wAndh ?? WAndH;
#endregion
if (string.IsNullOrEmpty(ApiUrl)) { return qrName; }
ApiUrl = string.Format("{0}?text={1}&logo={2}&w={3}",
ApiUrl,
HttpUtility.UrlEncode(Content),
HttpUtility.UrlEncode(LogoUrl),
WAndH);
qrName = DownImg(ApiUrl, SaveQRPath);
return qrName;
}
#endregion
#region 基础配置信息 /// <summary> /// 接口地址(必填) /// </summary> protected string ApiUrl = "https://chart.googleapis.com/chart"; /// <summary> /// 展示内容(文本内容),google文本参数直接传递http地址直接重定向 /// </summary> protected string Content = "http://www.cnblogs.com/wangrudong003/"; /// <summary> /// 保存二维码的磁盘路径(默认程序跟目录+QRCode) /// </summary> protected string SaveQRPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "QRCode"); /// <summary> /// Logo图片地址(http://) /// </summary> protected string LogoUrl = "http://a.hiphotos.baidu.com/baike/w%3D268%3Bg%3D0/sign=9a34e44d8bd4b31cf03c93bdbfed4042/2cf5e0fe9925bc318cb9fe965edf8db1ca1370dc.jpg"; /// <summary> /// 宽度和高度(二维码正方形的,高宽一至,默认200) /// </summary> protected int WAndH = 200; #endregion
/// <summary>
/// 二维码生成工厂
/// </summary>
public class QRCodeReposity
{
public static BaseQRCode Current(QREmType qrEmType = QREmType.BaseQRCode)
{
var nspace = typeof(BaseQRCode);
var fullName = nspace.FullName;
var nowspace = fullName.Substring(0, fullName.LastIndexOf('.') + 1);
return Assembly.GetExecutingAssembly().CreateInstance(nowspace + qrEmType.ToString(), true) as BaseQRCode;
}
}
/// <summary>
/// 工厂模块定义
/// </summary>
public enum QREmType
{
/// <summary>
/// google接口
/// </summary>
BaseQRCode,
/// <summary>
/// 2d-code接口
/// </summary>
QR_2dCode,
/// <summary>
/// topscan接口
/// </summary>
QR_TopScan
}
/// <summary>
/// 二维码生成工厂
/// </summary>
public class QRCodeReposity
{
public static BaseQRCode Current(QREmType qrEmType = QREmType.BaseQRCode)
{
var nspace = typeof(BaseQRCode);
var fullName = nspace.FullName;
var nowspace = fullName.Substring(0, fullName.LastIndexOf('.') + 1);
return Assembly.GetExecutingAssembly().CreateInstance(nowspace + qrEmType.ToString(), true) as BaseQRCode;
}
}
/// <summary>
/// 基类使用Google提供Api:https://developers.google.com/chart/infographics/docs/qr_codes ,由于是国外地址,相对来说有点慢
/// </summary>
public class BaseQRCode
{
#region 基础配置信息
/// <summary>
/// 接口地址(必填)
/// </summary>
protected string ApiUrl = "https://chart.googleapis.com/chart";
/// <summary>
/// 展示内容(文本内容),google文本参数直接传递http地址直接重定向
/// </summary>
protected string Content = "http://www.cnblogs.com/wangrudong003/";
/// <summary>
/// 保存二维码的磁盘路径(默认程序跟目录+QRCode)
/// </summary>
protected string SaveQRPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "QRCode");
/// <summary>
/// Logo图片地址(http://)
/// </summary>
protected string LogoUrl = "http://a.hiphotos.baidu.com/baike/w%3D268%3Bg%3D0/sign=9a34e44d8bd4b31cf03c93bdbfed4042/2cf5e0fe9925bc318cb9fe965edf8db1ca1370dc.jpg";
/// <summary>
/// 宽度和高度(二维码正方形的,高宽一至,默认200)
/// </summary>
protected int WAndH = 200;
#endregion
#region 方法
#region 生成二维码
/// <summary>
/// 生成二维码
/// </summary>
/// <param name="content">展示内容(文本内容 或者 扫描后的跳转http://格式的地址)</param>
/// <param name="savePath">保存二维码的磁盘路径(默认程序跟目录+QRCode)</param>
/// <param name="logoUrl"> Logo图标地址(格式:http://),(注:google接口暂未研究出此参数)</param>
/// <param name="apiUrl">接口地址(内置默认api地址)</param>
/// <param name="wAndh">宽度和高度(二维码正方形的,高宽一至,默认200)</param>
/// <returns></returns>
public virtual string CreateQRCode(string content = null, string savePath = null, string logoUrl = null, string apiUrl = null, int? wAndh = null)
{
var qrName = string.Empty;
#region 参数初始化
ApiUrl = apiUrl ?? ApiUrl;
Content = content ?? Content;
SaveQRPath = savePath ?? SaveQRPath;
LogoUrl = logoUrl ?? LogoUrl;
WAndH = wAndh ?? WAndH;
#endregion
if (string.IsNullOrEmpty(ApiUrl)) { return qrName; }
ApiUrl = string.Format("{0}?cht=qr&chl={1}&chs={2}x{2}",
ApiUrl,
HttpUtility.UrlEncode(Content),
WAndH);
qrName = DownImg(ApiUrl, SaveQRPath, ImageFormat.Jpeg);
return qrName;
}
#endregion
#region 下载图片
/// <summary>
/// 下载图片
/// </summary>
/// <param name="url">图片下载地址</param>
/// <param name="savePath">保存路径默认:Img文件夹</param>
/// <param name="format">默认:Jpeg</param>
/// <returns>新图片名称</returns>
public virtual string DownImg(string url, string savePath = "QRCode", ImageFormat format = null)
{
var qrName = string.Empty;
try
{
format = format ?? ImageFormat.Jpeg;
HttpClient http = new HttpClient();
http.Timeout = new TimeSpan(0, 1, 0);
using (var stream = http.GetStreamAsync(url).Result)
{
if (!Directory.Exists(SaveQRPath)) { Directory.CreateDirectory(SaveQRPath); }
qrName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "." + format;
var path = Path.Combine(savePath, qrName);
using (Image img = Image.FromStream(stream))
{
img.Save(path, format);
}
}
}
catch (Exception ex)
{
qrName = string.Empty;
}
return qrName;
}
#endregion
#endregion
}
/// <summary>
/// 使用2d-code提供Api,需要去官网注册获取Key
/// </summary>
public class QR_2dCode : BaseQRCode
{
public QR_2dCode()
{
ApiUrl = "http://www.2d-code.cn/2dcode/api.php";
}
#region 生成二维码
/// <summary>
/// 生成二维码
/// </summary>
/// <param name="content">展示内容(文本内容 或者 扫描后的跳转http://格式的地址)</param>
/// <param name="savePath">保存二维码的磁盘路径(默认程序跟目录+QRCode)</param>
/// <param name="logoUrl"> Logo图标地址(格式:http://),官方不建议使用png格式,测试只有jpg成功</param>
/// <param name="directUrl">扫描后重定向地址(http://)</param>
/// <param name="apiUrl">接口地址(内置默认api地址)</param>
/// <param name="wAndh">宽度和高度(二维码正方形的,高宽一至,默认200)</param>
/// <returns></returns>
public override string CreateQRCode(string content = null, string savePath = null, string logoUrl = null, string apiUrl = null, int? wAndh = null)
{
var qrName = string.Empty;
#region 参数初始化
ApiUrl = apiUrl ?? ApiUrl;
Content = content ?? Content;
SaveQRPath = savePath ?? SaveQRPath;
LogoUrl = logoUrl ?? LogoUrl;
WAndH = wAndh ?? WAndH;
#endregion
if (string.IsNullOrEmpty(ApiUrl)) { return qrName; }
ApiUrl = string.Format("{0}?key=c_d800OBbu6hDzJtXPE2Yd02IMtmpuK9VdCqHe6vrtar4&text={1}&url={2}&logo={3}&size={4}",
ApiUrl,
HttpUtility.UrlEncode(Content.Contains("http") ? "" : Content),
HttpUtility.UrlEncode(Content),
HttpUtility.UrlEncode(LogoUrl),
WAndH);
qrName = DownImg(ApiUrl, SaveQRPath);
return qrName;
}
#endregion
}
/// <summary>
/// 使用topscan提供Api
/// </summary>
public class QR_TopScan : BaseQRCode
{
public QR_TopScan()
{
ApiUrl = "http://qr.topscan.com/api.php";
}
#region 生成二维码
/// <summary>
/// 生成二维码
/// </summary>
/// <param name="content">展示内容(文本内容 或者 扫描后的跳转http://格式的地址)</param>
/// <param name="savePath">保存二维码的磁盘路径(默认程序跟目录+QRCode)</param>
/// <param name="logoUrl"> Logo图标地址(格式:http://),jpg,png测试通过,测试得出有不能成功的,原因不知是否和地址有关</param>
/// <param name="apiUrl">接口地址(内置默认api地址)</param>
/// <param name="wAndh">宽度和高度(二维码正方形的,高宽一至,默认200)</param>
/// <returns></returns>
public override string CreateQRCode(string content = null, string savePath = null, string logoUrl = null, string apiUrl = null, int? wAndh = null)
{
var qrName = string.Empty;
#region 参数初始化
ApiUrl = apiUrl ?? ApiUrl;
Content = content ?? Content;
SaveQRPath = savePath ?? SaveQRPath;
LogoUrl = logoUrl ?? LogoUrl;
WAndH = wAndh ?? WAndH;
#endregion
if (string.IsNullOrEmpty(ApiUrl)) { return qrName; }
ApiUrl = string.Format("{0}?text={1}&logo={2}&w={3}",
ApiUrl,
HttpUtility.UrlEncode(Content),
HttpUtility.UrlEncode(LogoUrl),
WAndH);
qrName = DownImg(ApiUrl, SaveQRPath);
return qrName;
}
#endregion
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有