最近搞了个生成二维码的webservice,支持中文,都是利用网上的方法,自己组装了一下。
组件:ThoughtWorks.QRCode.dll
webservice:
using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using ThoughtWorks.QRCode.Codec;
using ThoughtWorks.QRCode.Codec.Data;
using ThoughtWorks.QRCode.Codec.Util;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
/// <summary>
/// MSGQRCode 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class MSGQRCode : System.Web.Services.WebService
{
public MSGQRCode()
{
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod]
public string CreateQRCode(string url)
{
if (string.IsNullOrEmpty(url))
{
return "";
}
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
qrCodeEncoder.QRCodeEncodemode = QRCodeEncoder.ENCODE_MODE.BYTE;
qrCodeEncoder.QRCodeScale = 4;
qrCodeEncoder.QRCodeVersion = 8;
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
try
{
String ls_fileName = DateTime.Now.ToString("yyyyMMddhhmmss") + ".png";
String ls_savePath = Server.MapPath("../") + "/QRCodeImages/" + ls_fileName;
qrCodeEncoder.Encode(url,System.Text.Encoding.UTF8).Save(ls_savePath);
ImageWatermark(Server.MapPath("../QRCodeImages/" + ls_fileName),Server.MapPath("../shuiyin.jpg"),"C");
return "QRCodeImages/" + ls_fileName;
}
catch (Exception ex)
{
return ex.Message;
}
}
/// <summary>
/// 图片水印处理方法
/// </summary>
/// <param name="path">需要加载水印的图片路径(绝对路径)</param>
/// <param name="waterpath">水印图片(绝对路径)</param>
/// <param name="location">水印位置(传送正确的代码)</param>
/// <returns></returns>
private string ImageWatermark(string path,string waterpath,string location)
{
//获取文件扩展名
string kz_name = Path.GetExtension(path);
//暂时只支持给.JPG,.BMP,.JPEG格式加水印
if (kz_name == ".jpg" || kz_name == ".bmp" || kz_name == ".jpeg" || kz_name == ".png")
{
//设置新的文件名
DateTime time = DateTime.Now;
string filename = "" + time.Year.ToString() + time.Month.ToString() + time.Day.ToString() + time.Hour.ToString() + time.Minute.ToString() + time.Second.ToString() + time.Millisecond.ToString();
//加载需要加载水印的图片
Image img = Bitmap.FromFile(path);
//加载水印图片
Image waterimg = Image.FromFile(waterpath);
//添加水印
Graphics g = Graphics.FromImage(img);
//获取水印位置设置
ArrayList loca = new ArrayList();
int x = 0;
int y = 0;
x = img.Width / 2 - waterimg.Width / 2;
y = img.Height / 2 - waterimg.Height / 2;
loca.Add(x);
loca.Add(y);
g.DrawImage(waterimg,new Rectangle(int.Parse(loca[0].ToString()),int.Parse(loca[1].ToString()),waterimg.Width,waterimg.Height)); //释放资源 waterimg.dispose(); g.dispose(); //保存水印图片 string newpath = Path.GetDirectoryName(path) + filename + kz_name; img.Save(newpath); img.dispose(); //将水印复制到原有图片 //将水印图片替换原有图片 File.copy(newpath,path,true); //删除水印 if (File.Exists(newpath)) { File.Delete(newpath); } } return path; } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。