怎么生成帶參數二維碼我就不說了接口自己看
生成帶參數的二維碼
有人會說生成了帶參數二維碼都已經生成了為什么還要保存到本地呢 具體需求是這樣的 要將生成的帶參數二維碼打包發給圖片制作商制作 一個個另存為浪費時間
別的不說了說重點
public static void SaveQrCodeImage(string strUrl)
{
try
{
System.Net.Http.HttpClient client = new System.Net.Http.HttpClient();
Byte[] bytes = client.GetByteArrayAsync(strUrl).Result;
// return new MemoryStream(bytes);
byte[] tt = bytes; //StreamToBytes(stream);//將數據流轉為byte[]
//在文件名前面加上時間,以防重名
string imgName = DateTime.Now.ToString("yyyyMMddhhmmss") + ".jpg";
//文件存儲相對於當前應用目錄的虛擬目錄
string path = "/Uploads/imageminiqrcode/";
//獲取相對於應用的基目錄,創建目錄
string imgPath = System.Web.HttpContext.Current.Server.MapPath(path); //通過此對象獲取文件名
if (!System.IO.Directory.Exists(imgPath)) //如果文件夾不存在則創建
{
System.IO.Directory.CreateDirectory(imgPath);
}
System.IO.File.WriteAllBytes(HttpContext.Current.Server.MapPath(path + imgName), tt);//講byte[]存儲為圖片
}
catch
{
throw new Exception("獲取二維碼圖片失敗!");
}
}
數據流轉換為byte[]
///將數據流轉為byte[] public static byte[] StreamToBytes(Stream stream) { List<byte> bytes = new List<byte>(); int temp = stream.ReadByte(); while (temp != -1) { bytes.Add((byte)temp); temp = stream.ReadByte(); } return bytes.ToArray(); }
使用方法
protected void Page_Load(object sender, EventArgs e) {
//"https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQEE8jwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyMVFYY0pjbl84TVQxMDAwMDAwN2MAAgSytOxYAwQAAAAA"
SaveQrCodeImage("https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQEE8jwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyMVFYY0pjbl84TVQxMDAwMDAwN2MAAgSytOxYAwQAAAAA");
}
效果圖

當然還是要吐槽下微信給的帶參數二維碼機制可能考慮安全問題 導致弄個字節流自己讀寫二維碼不太明智 全當復習復習了(*^__^*) 嘻嘻……
歡迎園友吐槽...
