Popular blog tags

一、开发步骤如下 在微信二维码海报生成中,需要用到以下信息

1. 自定义菜单中设置一个菜单项,点击后返回二维码海报给用户

2. 接口接收到菜单点击之后,获取用户的头像、ID(可以使用OpenID)

3. 生成和用户关联的参数二维码,

4. 将参数二维码进行缩放

5. 将头像和参数二维码合并成新的参数二维码图片

6. 将新参数二维码图片做为水印合成到背景海报中

7. 将用户昵称,以及二维码时间戳(类型为临时二维码时)等文字合成到背景海报中

8. 将海报上传成临时图片素材

9. 将图片素材使用客服接口发送给用户。

二、图像处理关键点

1.用户默认头像是640像素的大图,将其切换成64位像素大小,以便放置在二维码中间。

2.微信二维码默认是430像素,将其缩放成300像素。  

三、如何在用户输入关键字时自动回复图片,一张整体图。 第1种 是直接回复“图片消息”,这个的话因为图片是通过ID的方式使用的,所以你得先把图片存到公共平台上,也就是调用上传下载接口,然后才能回复图片消息。 第2种 是把它可以把它当作一个单一的图文类型回复就行,并且使用你的图片作为文章封面,不要写文章摘要,这样也能看到图片的。(如果用户打开文章的话就依然打开一个有你二维码的图片的网页(当然,做点简单的文字介绍可能会好一些))。这种方式的好处是你不用把图片上传公共平台,只需提供图片的url就行

四、用户关注公众号的方式

(一)通过图文

(二)通过二维码 

(三)一键链接自动关注 朋友圈打广告的一些公众号可以直接关注的实现 https://blog.csdn.net/pksport/article/details/78189956  

 

生成带用户标识的二维码海报菜单点击事件程序逻辑

  #region 二维码海报
                                    if (objectResult.EventKey == "rselfmenu_2_2")
                                    {

#if DEBUG
                                        _logger.LogInformation($"{DateTime.Now.ToString()}-var result = this._userPosterQrCodeService.GetUserPosterQrCodeByOpenId(i.FromUserName): {objectResult.FromUserName}");

#endif
                                        this._customMessageService.SendCustomMessage(accessToken, objectResult.FromUserName, "正在为您生成个性化推广二维码海报,请稍等...");

                                       //查找数据库看用户是否已经生成过二位码海报
                                        var result = this._userPosterQrCodeService.GetUserPosterQrCodeByOpenId(objectResult.FromUserName);

                                        result = null;
                                        //未生成
                                        if (result == null)
                                        {
#if DEBUG
                                            _logger.LogInformation($"{DateTime.Now.ToString()}-数据库里没该用户的海报记录,开始重新生成海报");

#endif

                                            //  var tmpresult = this._userPosterQrCodeService.GenerateUserPosterQrCodeMediaIdByOpenId(accessToken, objectResult.FromUserName);

                                            //将生成的海报是一张带二维码的图片,将该图片上传至素材库,返回media_id
                                            //   this._userPosterQrCodeService.InsertUserPosterQrCode(tmpresult);
                                            //向用户回复图文消息数据
                                            // repayXmlString = PassiveUserReplyMessage.ImageMessageReplies(i.FromUserName, i.ToUserName, "pcexYSsrso19pDhC_MKfrMVGeUFp87NuJQHHAalnL7U7dpIwOLCCOVvorHA0BNvS");
                                            //用图文消息回复该用户,回复内容为海报图片
                                            //   repayXmlString = PassiveUserReplyMessage.ImageMessageReplies(objectResult.FromUserName, objectResult.ToUserName, tmpresult.AssetUploadTemporaryResult.media_id);
                                            // break;
                                        }

广告词:

设置领取你的微信公众号专属海报

其他

(一)图像处理出现错误记录

A Graphics object cannot be created from an image that has an indexed pixel format. 解决办法 Try using a MemoryStream instead. 原文链接:https://forums.asp.net/t/1195630.aspx?A+Graphics+object+cannot+be+created+from+an+image+that+has+an+indexed+pixel+format+  https://stackoverflow.com/questions/17313285/graphics-on-indexed-image

 (二)其他工具

QRCode是日本人开发的,ZXing是google开发,barcode4j也是老美开发的,barcode4j对一维条形码处理的很好。 参考资料:

1. C#图片处理示例(裁剪,缩放,清晰度,水印)

https://www.cnblogs.com/wu-jian/archive/2011/02/21/1959382.html

c# QRCode生成与解码二维码,圆角用户图像

 http://www.cnblogs.com/yechangzhong-826217795/p/6734359.html 

http://www.cnblogs.com/zxtceq/p/5845378.html 

http://www.cnblogs.com/txw1958/p/weixin-poster.html.