文件下载链接
引用包
此方法的解码缺点:只能解此方法生成的二维码
一、生成 : 一般处理程序
public void ProcessRequest(HttpContext context
)
{
context
.Response
.ContentType
= "text/plain";
context
.Response
.AddHeader("Access-Control-Allow-Origin", "*");
context
.Response
.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
context
.Response
.AddHeader("Access-Control-Allow-Headers", "Content-Type");
string Content
= context
.Request
["Content"];
string ImageUrl
= context
.Request
["Image"];
string LocalImage
= context
.Request
["LocalImage"];
Bitmap BitmapImage
= null;
if (ImageUrl
!= "" && LocalImage
== "")
{
BitmapImage
= CreateQRCodeWithLogo(Content
, ImageUrl
, true);
}
else {
BitmapImage
= CreateQRCodeWithLogo(Content
, LocalImage
, false);
}
using (MemoryStream memoryStream
= new MemoryStream())
{
BitmapImage
.Save(memoryStream
,ImageFormat
.Png
);
byte[] ImageInfo
= new byte[memoryStream
.Length
];
memoryStream
.Position
= 0;
memoryStream
.Read(ImageInfo
,0, int.Parse(memoryStream
.Length
.ToString()));
string strbaser64
= Convert
.ToBase64String(ImageInfo
);
strbaser64
= "data:image/png;base64," + strbaser64
.ToString();
context
.Response
.Write(strbaser64
);
}
}
public Bitmap CreateQRCode(string Content
) {
try
{
QRCodeEncoder qRCode
= new QRCodeEncoder();
qRCode
.QRCodeEncodeMode
= QRCodeEncoder
.ENCODE_MODE
.BYTE
;
qRCode
.QRCodeScale
= 5;
qRCode
.QRCodeVersion
= 7;
qRCode
.QRCodeErrorCorrect
= QRCodeEncoder
.ERROR_CORRECTION
.M
;
qRCode
.QRCodeBackgroundColor
= Color
.White
;
qRCode
.QRCodeForegroundColor
= Color
.Black
;
Bitmap qrcode
= qRCode
.Encode(Content
, Encoding
.UTF8
);
return qrcode
;
}
catch (Exception)
{
return null;
}
}
public Bitmap CreateQRCodeWithLogo(string Content
, string LogoRoute
,bool IsLocal
)
{
Bitmap QRCode
= CreateQRCode(Content
);
Bitmap LogoBitmap
= null;
if (IsLocal
)
{
LogoBitmap
= HttpGet(LogoRoute
);
}
else {
LogoBitmap
= new Bitmap(LogoRoute
);
}
ImageUtility image
= new ImageUtility();
Bitmap finaImage
= image
.MergeQrImg(QRCode
,LogoBitmap
);
return finaImage
;
}
public Bitmap HttpGet(string ImageRoute
) {
HttpWebRequest httpWeb
= WebRequest
.Create(ImageRoute
) as HttpWebRequest
;
httpWeb
.Method
= "Get";
HttpWebResponse webResponse
= httpWeb
.GetResponse() as HttpWebResponse
;
using (Stream stream
= webResponse
.GetResponseStream())
{
Image Image
= Image
.FromStream(stream
);
Bitmap bitmap
= new Bitmap(Image
);
return bitmap
;
}
}
二、运行效果
返回的是:Base64码
三、解码 : 一般处理程序
public void ProcessRequest(HttpContext context
)
{
context
.Response
.ContentType
= "text/plain";
context
.Response
.AddHeader("Access-Control-Allow-Origin", "*");
context
.Response
.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
context
.Response
.AddHeader("Access-Control-Allow-Headers", "Content-Type");
string ImageUrl
= context
.Request
["ImageUrl"];
string localImageUrl
= context
.Request
["localImageUrl"];
if (ImageUrl
!= "" && localImageUrl
== "")
{
string Content
= IsLocalGetQRCode(ImageUrl
, true);
context
.Response
.Write(Content
);
}
else {
string Content
= IsLocalGetQRCode(localImageUrl
,false);
context
.Response
.Write(Content
);
}
}
public string GetQRCode(Bitmap QRCodeImageUrl
) {
string Cotent
= "";
try
{
QRCodeDecoder qRCode
= new QRCodeDecoder();
Cotent
= qRCode
.decode(new QRCodeBitmapImage(QRCodeImageUrl
));
return Cotent
;
}
catch (SystemException)
{
return "此二维码不在本解码服务之内, 请用其他的解码工具";
}
}
public string IsLocalGetQRCode(string ImageUrl
, bool IsLocal
) {
Bitmap Imagebitmap
= null;
if (IsLocal
)
{
Imagebitmap
= HttpGet(ImageUrl
);
}
else {
Imagebitmap
= new Bitmap(ImageUrl
);
}
return GetQRCode(Imagebitmap
);
}
public Bitmap HttpGet(string ImageUrl
) {
HttpWebRequest httpWeb
= WebRequest
.Create(ImageUrl
) as HttpWebRequest
;
httpWeb
.Method
= "Get";
HttpWebResponse webResponse
= httpWeb
.GetResponse() as HttpWebResponse
;
Stream Imagestream
= webResponse
.GetResponseStream();
Bitmap Imagebitmap
= new Bitmap(Bitmap
.FromStream(Imagestream
));
return Imagebitmap
;
}
四、效果
转载请注明原文地址: https://mac.8miu.com/read-486776.html