微信小程序获取普通二维码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.IO;
using System.Web.Script.Serialization;
using LitJson;
using System.Drawing;
using System.Drawing.Imaging; namespace WetChat
{
public class Chat
{
public string Path; public string Width; public string Savepath; public string Codes;
public Chat(string savepath,string codes)
{
this.Path = "pages/index/index?codes="+ codes;
this.Savepath = savepath+"qr_"+codes+".png";
this.Codes = codes;
}
/// <summary>
/// 获取acesstoken
/// </summary>
/// <returns></returns>
public string GetAccess_Token()
{
string urls = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&secret=";
HttpWebRequest request = (System.Net.HttpWebRequest)WebRequest.Create(urls); //请求api
HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
string respText = "";
using (Stream resStream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(resStream, Encoding.Default);
respText = reader.ReadToEnd();
resStream.Close();
}
JavaScriptSerializer Jss = new JavaScriptSerializer();
Dictionary<string, object> respDic = (Dictionary<string, object>)Jss.DeserializeObject(respText);
//通过键access_token获取值
return respDic["access_token"].ToString();
}
/// <summary>
///
/// </summary>
/// <param name="path"></param>
/// <param name="width"></param>
/// <param name="savepath"></param>
public void GetWxCode()
{
string url = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=" + GetAccess_Token();
HttpWebRequest request = (System.Net.HttpWebRequest)WebRequest.Create(url); //创建url
request.Method = "POST";
request.ContentType = "application/json;charset=UTF-8";
JsonData data = new JsonData();
data["path"] = this.Path;
data["width"] = this.Width; string json = data.ToJson();
byte[] load = Encoding.UTF8.GetBytes(json);
request.ContentLength = load.Length;
Stream writer = request.GetRequestStream();
writer.Write(load, 0, load.Length); HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
Stream s = response.GetResponseStream();
byte[] mg = StreamToBytes(s);
Image imgs = CaptureImage(mg);
byte[] mgs = PhotoImageInsert(imgs);
if (File.Exists(this.Savepath))
{
File.Delete(this.Savepath);
File.WriteAllBytes(this.Savepath, mgs); }
else
{ File.WriteAllBytes(this.Savepath, mgs); } } 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(); } /// <summary>
/// 第二部截取:图片转换为文件流
/// </summary>
/// <param name="bytes"></param>
public System.Drawing.Image CaptureImage(byte[] bytes)
{
Image formimage = ReturnPhoto(bytes);
Bitmap bitmap = new Bitmap(440, 440);
Point p = new Point(0, 0); Size s = new Size(455, 455);
Graphics gra = Graphics.FromImage(bitmap);
gra.DrawImage(formimage, -15, -15, new Rectangle(p,s), GraphicsUnit.Pixel);
Image saveimage = Image.FromHbitmap(bitmap.GetHbitmap()); return saveimage; } /// <summary>
/// 第三部:图片转换文件流
/// </summary>
/// <param name="imgPhoto"></param>
/// <returns></returns>
public byte[] PhotoImageInsert(System.Drawing.Image imgPhoto)
{
MemoryStream mstream = new MemoryStream();
imgPhoto.Save(mstream, System.Drawing.Imaging.ImageFormat.Bmp);
byte[] byData = new Byte[mstream.Length];
mstream.Position = 0;
mstream.Read(byData, 0, byData.Length); mstream.Close();
return byData;
}
/// <summary>
/// 第一步:将文件流转换为image
/// </summary>
/// <param name="streamByte"></param>
/// <returns></returns>
public System.Drawing.Image ReturnPhoto(byte[] streamByte)
{
System.IO.MemoryStream ms = new System.IO.MemoryStream(streamByte);
System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
return img;
} }
}
普通二维码有下面的微信的logo 所以截取
分了三部:
第一:将文件流转换为image
第二:将image截取
第三:将image转换为文件流
生成100个编码总共用时40s(着实有点多,转换哪里太浪费了)
微信小程序获取普通二维码的更多相关文章
- 微信小程序条码、二维码生成模块
代码地址如下:http://www.demodashi.com/demo/13994.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...
- 微信小程序之生成二维码
最近项目中涉及到小程序的生成二维码,很是头疼,经过多次摸索,整理出了自己的一些思想方法,如有不足,欢迎指正. 首先完全按照小程序的结构依次填坑. pages--index.wxml <view ...
- 微信小程序扫描普通二维码打开小程序的方法
很久没有写博客了,之前换了一份工作,很久没有做Android开发了,现在转做前端开发了,记录一下遇到的问题及解决的方法. 最近做微信小程序开发,遇到一个需求,后台管理系统生成的问卷和投票会有一个二维码 ...
- 微信小程序 - 配置普通二维码跳小程序
普通二维码跳小程序规则: https://developers.weixin.qq.com/miniprogram/introduction/qrcode.html#%E5%8A%9F%E8%83%B ...
- 转【微信小程序 四】二维码生成/扫描二维码
原文:https://blog.csdn.net/xbw12138/article/details/75213274 前端 二维码生成 二维码要求:每分钟刷新一次,模拟了个鸡肋,添加了个按分钟显示的时 ...
- php 小程序获取渠道二维码 保存
function ppost($url,$arr){ $post_data = json_encode($arr); $url=$url; $ch = curl_init(); curl_setopt ...
- 微信小程序生成带参二维码
需求:生成小程序中的海报,需要小程序二维码可以使用户保存到本地在朋友圈分享 生成二维码工具类代码如下: package com.aone.foottalk.action.wx.util; import ...
- PHP后端代码生成微信小程序带参数的二维码保存成jpg图片上传到服务器getwxacodeunlimit
老板最近有点飘了,他要在PC端的网站放一个微信小程序的二维码,并且扫描这个二维码以后要跳到小程序对应的房源详情页. 这是微信官方给出的文档,连接地址:https://developers.weixin ...
- 小程序canvas生成二维码图片踩的坑
1:生成临时图片,保证画布被加载以及渲染(即本身不可以 hidden 或是 上级元素不可以 hidden 或是 wx:if 隐藏等) == > 建议:因为 canvas 的组件层级(z-inde ...
随机推荐
- VS2013 c++ 生成和调用DLL动态链接库(.def 方法已验证OK)
转载:https://blog.csdn.net/zhunianguo/article/details/52294339 .def 方法 创建动态库方法: 创建动态库是生成 .dll .lib 两个个 ...
- 一文带你定制unittest测试用例的名称
在之前的文章中,我在之前的文章中提到过,这里呢,考虑后,感觉之前的写法不够优雅,于是乎呢,我自己抽空去研究了下,主要是新写方法,这样呢,以后的要使用的时候,可以直接去使用,而不是每次换个环境就要修改环 ...
- 踩坑系列:MySql only_full_group_by配置,竟导致所有应用报错?
1. 踩坑经历 一个很平常的下午,大家都在埋头认真写bug呢,突然企业微信群里炸锅了,好多应用都出现大量的Error日志,而且都报同一个错误,就是下面这个: Caused by: com.mysql. ...
- OAuth 2.0 Server PHP实现示例
需求实现三方OAuth2.0授权登录 使用OAuth服务OAuth 2.0 Server PHP 环境nginx mysqlphp 框架Yii 一 安装 项目目录下安装应用 composer.phar ...
- navicat 生成注册码( 仅供学习使用 )
前言,由于navicat使用比较顺手,刚好前段时间试用期到,又看看了怎么生成注册码,特地记录下使用 . 1.运行 找到 navicat 文件(exe) 2.生成注册文件(报错好,后续会用到) 3.断网 ...
- python中input()函数与print()函数
一.input()函数详解 二.print()函数详解 三.类型转换
- 多测师_svn_004
svn 版本控制工具项目管理中的版本控制问题:解决代码冲突困难容易引发bug难于恢复至正确版本无法进行权限控制项目版本发布困难 什么是版本控制是指维护工程蓝图的表座做法,能追踪工程蓝图从诞生到定案的过 ...
- Linux下快速搭建测试网站DVWA
DVWA(Damn Vulnerable Web App)是一个基于PHP/MySql搭建的Web应用程序,旨在为安全专业人员测试自己的专业技能和工具提供合法的 环境,帮助Web开发者更好的理解Web ...
- zookeeper-(单机,伪集群)
安装zookeeper(单机,伪集群): 1.下载 登陆zookeeper官网下载 https://zookeeper.apache.org/ 或者 https://mirror.bit.e ...
- nfs4使用中的防火墙配置
一,查看本地centos的版本: [root@localhost lib]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) ...