微信小程序获取普通二维码

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(着实有点多,转换哪里太浪费了)

  

  

时间: 2024-08-30 07:49:57

微信小程序获取普通二维码的相关文章

微信小程序带参数生成二维码

wx.request({ url: 'https://api.weixin.qq.com/cgi-bin/token', header: { 'content-type': 'application/json' }, data: { grant_type: 'client_credential', appid:'appid secret: '秘钥' }, success(res) { accessToken = res.data.access_token wx.request({ //url:

小程序动态生成二维码,生成image图片

前端: <image src="{{img_usrl}}" style="width:100%;height:104px;" bindlongtap="saveImg"></image> js部分:在onLoad中请求 //我的userid 值为:239a3c37-3c2e-4a9d-be74-557638b23b63this.setData({ img_usrl: getApp().getBaseUrl() + &quo

小程序通过扫二维码带参数编辑

onLoad: function (option) { var self = this; if(option.dealerid){ //首页进入带的参数 } } 原文地址:https://www.cnblogs.com/liubingyjui/p/12377318.html

当在微信扫一扫进入小程序 并获取到二维码的参数 从而实现扫码进入小程序

第一步:  登录你的小程序账号,找到设置 ,然后选择开发设置 点击添加后进去页面: 填写相应的一些二维码规则,就是你生成这个扫码的规则,还有根据项目情况填写下面对应的要求  保存之后可以返回到之前的页面 这样就实现了在微信打开扫一扫就进入小程序了 更深入一些: 当需要扫码进入之后需要获取二维码的参数进行下一步操作的话 ,可以再onload函数中进行判断 逻辑代码如下 if(e.q){ var scene = decodeURIComponent(e.q)  // 使用decodeURICompo

微信公众平台开发教程(六)获取个性二维码

微信公众平台开发教程(六)获取个性二维码 一.功能介绍 在进行推广时,我们可以告诉对方,我们的微信公众账号是什么,客户可以去搜索,然后关注.二维码给我们提供了极大的便捷,只要简单一扫描,即可关注. 如果已经关注过,立刻跳入对话画面.在我们进行推广时,不再是简陋的文字,可以是一个有个性的二维码,想必会很生动. 微信对二维码提供了很好的支持,而且还可以根据需要生成不同场景的二维码.下面我们将介绍如何获取和使用二维码. 注意:限服务号,且进行了微信认证,费用300 二.相关接口 为了满足用户渠道推广分

php微信开发之带参数二维码的使用

最近做微信PC端网页微信相关功能的开发,从一个新手的角度来说,微信公众号的文档还是不好理解的,网上找的帖子大都也都基本上是复制微信公众平台上给的文档,开发微信带参数二维码过程中还是遇到不少坑的,在此把我的开发过程比较详细的记录下,希望对大家有所帮助. 我本次开发使用的是认证服务号. 1 接入首先进入微信公众号 -> 基本配置 下面是基本配置的页面,在URL中填写服务器地址,这个地址就是接受微信推送事件的一个接口,我是使用thinkPHP框架开发的程序,在其中一个Module(Decoration

(用微信扫的静态链接二维码)微信native支付模式官方提供的demo文件中的几个bug修正

原文:(用微信扫的静态链接二维码)微信native支付模式官方提供的demo文件中的几个bug修正 native支付模式一demo(用微信扫的静态链接二维码)BUG修复,一共4个BUG 1.native_call_qrcode.php这个文件中的代码无法生存native支付的短地址2.WxPayPubHelper.php中某个代码获取不到WxPayConf_pub类定义的常量CURL_TIMEOUT3.WxPayPubHelper.php curl中cURL会话并且异常释放资源4.微信支付长地址

微信小程序把玩(二十)slider组件

原文:微信小程序把玩(二十)slider组件 slider滑动组件用的不太多,在其他平台反正我是用的不多 主要属性: wxml <slider max="100" step="10" show-value="true" bindchange="listenerSlider" /> js Page({ data:{ // text:"这是一个页面" }, /** * 监听slider */ lis

Asp.Net微信登录-电脑版扫描二维码登录

像京东,一号店等网站都实现了用微信来登录的功能,就是用手机上的微信扫一扫网站上的二维码,微信上确认后,即可自动用微信的帐号登录网站. 一.创建网站应用 在微信开放平台创建一个网站应用 https://open.weixin.qq.com : 填写网站信息: 申请完后,7天内通过(我的是第二天就通过了),然后就可以看到 AppID 和 AppSecret 二.微信登录开发 1.获取Code 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临