2018-05-15 19:13:45 guout 阅读数 1057
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27772 人正在学习 去看看 秦子恒

微信小程序image组件开发程序以及相关图片问题参考资料汇总,希望对大家小程序开发能有一定的参考和借鉴价值。以下汇总主要涉及到微信小程序image组件有关资源路径、缩放和剪裁模式等进行的探讨,无论是对微信小程序新手还是正在开发中的朋友都是很好的小程序学习资料。

微信小程序image组件必备基础知识:

  • image组件默认宽度300px、高度225px
  • image的属性mode有13种模式,其中4种是缩放模式,9种是裁剪模式


image组件开发教程汇总:

微信小程序自定义组件实现图片单指拖动、双指缩放效果:http://www.henkuai.com/thread-37119-1-1.html

微信小程序image组件的缩放模式介绍,以及图片滚动轴问题:http://www.henkuai.com/thread-37117-1-1.html

微信小程序canvas图片加载问题,图片显示不出来的解决办法:http://www.henkuai.com/thread-37106-1-1.html

微信小程序开发,图片在真机不显示的问题总结:http://www.henkuai.com/thread-37105-1-1.html

微信小程序image宽度100%,高度自适应的方法:http://www.henkuai.com/thread-37104-1-1.html

微信小程序加载本地图片方法汇总, 学习小程序开发必备:http://www.henkuai.com/thread-37097-1-1.html

微信小程序开发之图片选择区域、屏幕裁剪等实现方法:http://www.henkuai.com/thread-37096-1-1.html

微信小程序实现图片放大缩小,并截取图片指定区域的方法:http://www.henkuai.com/thread-37096-1-1.html

微信小程序开发实现图片预加载组件,很实用的小程序功能:http://www.henkuai.com/thread-37087-1-1.html

微信小程序开发,适用于微信小程序的图片预加载组件:http://www.henkuai.com/thread-37082-1-1.html

微信小程序开发之背景图片绝对定位方法:http://www.henkuai.com/thread-37080-1-1.html

微信小程序开发,图片自适应屏幕大小,屏幕适配办法:http://www.henkuai.com/thread-37079-1-1.html

微信小程序image组件开发,binderror与js中的onerror区别:http://www.henkuai.com/thread-37078-1-1.html

微信小程序实现image宽度比例自适应显示的解决方案:http://www.henkuai.com/thread-37076-1-1.html

微信小程序,图片宽高自适应解决方案:http://www.henkuai.com/thread-37075-1-1.html

微信小程序开发图片自适应并且支持多图实例教程:http://www.henkuai.com/thread-37068-1-1.html

微信小程序实现图片上传、删除和预览功能的例子:http://www.henkuai.com/thread-37066-1-1.html

微信小程序:图片等比缩放不变形,宽高自适应:http://www.henkuai.com/thread-37065-1-1.html

微信小程序中实现手指缩放图片,手势缩放操作思路参考:http://www.henkuai.com/thread-37120-1-1.html

微信小程序开发image固定宽高缩放导致变形问题的解决办法:http://www.henkuai.com/thread-37064-1-1.html


image组件开发问题汇总:

微信小程序image组件background-image手机不显示问题:http://www.henkuai.com/thread-22217-1-1.html

微信小程序关于在手机端没有正常显示<view>中<image>的问题:http://www.henkuai.com/thread-26893-1-1.html

微信小程序image加载服务器图片,当服务器图片不存在时,如何调用本地图片作为默认图片:http://www.henkuai.com/thread-19712-1-1.html

微信小程序image的src读取不到wxfile://...的路径:http://www.henkuai.com/thread-16910-1-1.html

微信小程序怎么使用代码更改前台的image的src的值:http://www.henkuai.com/thread-17561-1-1.html

微信小程序开发遇坑总结,遮罩层滚动穿透和图片加载问题:http://www.henkuai.com/thread-36803-1-1.html

微信小程序开发总结,微信小程序数据存储,图片上传等:http://www.henkuai.com/thread-36770-1-1.html

微信小程序压缩图片办法:http://www.henkuai.com/thread-36660-1-1.html

如何去除微信小程序image默认样式:http://www.henkuai.com/thread-36554-1-1.html

微信小程序调用图片接口,出现渲染层网络层错误:http://www.henkuai.com/thread-36011-1-1.html

微信小程序首次登录加载图片拉长问题:http://www.henkuai.com/thread-36168-1-1.html

微信小程序图片显示问题,开发工具里显示图片正常,用手机打开,图片不显示:http://www.henkuai.com/thread-36163-1-1.html

微信小程序生成分享图片如何实现:http://www.henkuai.com/thread-35502-1-1.html

微信小程序怎么能够在保存图片的时候把canvas的背景色一起保存下来:http://www.henkuai.com/thread-35072-1-1.html

微信小程序上传图片到后台文件名被篡改,如何解决:http://www.henkuai.com/thread-34387-1-1.html

微信小程序请求的接口图片显示不出来:http://www.henkuai.com/thread-33892-1-1.html

微信小程序图片裁剪和缩放的思路:http://www.henkuai.com/thread-19245-1-1.html

微信小程序图片手势缩放功能怎么写:http://www.henkuai.com/thread-32932-1-1.html

微信小程序长按保存图片怎么实现:http://www.henkuai.com/thread-32782-1-1.html

微信小程序里面图片宽高写死的情况下变形怎么处理:http://www.henkuai.com/thread-32314-1-1.html

微信小程序wxss中background使用背景图片无效的问题:http://www.henkuai.com/thread-23116-2-1.html

微信小程序下载保存图片如何能在相册里看到:http://www.henkuai.com/thread-16924-1-1.html

微信小程序图片上有热点,点击图片,怎么识别出点击的是热点:http://www.henkuai.com/thread-30937-2-1.html

以上就是微信小程序image组件的相关资料整理,如果大家还有其他小程序图片问题的整理,欢迎分享。

2017-05-23 15:18:21 RE_PHPzjw 阅读数 7105
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27772 人正在学习 去看看 秦子恒

目录 List

1. 那一抹淡淡的忧伤—–微信开发基础
2. 用纯js是不可能用纯js了,这辈子都不用纯js了 —– 微信JSSDK开发以及问题解答
3. 要你命3000 —— 微信支付开发系列问题解决

导语

微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。
通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,为微信用户提供更优质的网页体验。
本文重点讲最新的JSSDK版本1.2,关于1.2版本的说明可以参考这里
尤其注意从1.2版本开始微信针对IOS系统WKWebview内核做出了重大改变,所以广大开发者当以最新JSSDK1.2版本为开发源码,否则可能造成IOS部分功能无效


开发前准备

步骤一:绑定域名

先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
备注:登录后可在“开发者中心”查看对应的接口权限。


步骤二:引入JS文件
在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.2.0.js


步骤三:通过config接口注入权限验证配置

wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: ”, // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: ”, // 必填,生成签名的随机串
signature: ”,// 必填,签名,见附录1
jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 });

直接用代码演示

//加载微信JSSDK config
wx.config({
        debug: false,
        appId: 'APPID',
        timestamp: time,
        nonceStr: 'NONCESTR',
        signature: 'SIGNATURE',
        jsApiList: [
            'checkJsApi',
            'onMenuShareTimeline',
            'onMenuShareAppMessage',
            'onMenuShareQQ',
            'onMenuShareWeibo',
            'onMenuShareQZone',
            'hideMenuItems',
            'showMenuItems',
            'hideAllNonBaseMenuItem',
            'showAllNonBaseMenuItem',
            'translateVoice',
            'startRecord',
            'stopRecord',
            'onVoiceRecordEnd',
            'playVoice',
            'onVoicePlayEnd',
            'pauseVoice',
            'stopVoice',
            'uploadVoice',
            'downloadVoice',
            'chooseImage',
            'previewImage',
            'uploadImage',
            'downloadImage',
            'getNetworkType',
            'openLocation',
            'getLocation',
            'hideOptionMenu',
            'showOptionMenu',
            'closeWindow',
            'scanQRCode',
            'chooseWXPay',
            'openProductSpecificView',
            'addCard',
            'chooseCard',
            'openCard',
        ]
    });
    //JSSDK错误报告
    wx.error(function(res){
        console.log(location.href.split('#')[0]);
    });

config里面所涉及到的参数我们通过JSSDK官方demo来提供数据,我对官方的demo进行了再次封装,直接在这里贴出来:

class Jssdk{
    private $appId;
    private $appSecret;

    public function __construct($appId, $appSecret) {
        $this->appId = $appId;
        $this->appSecret = $appSecret;
    }

    public function getSignPackage() {
        $jsapiTicket = $this->getJsApiTicket();

        // 注意 URL 一定要动态获取,不能 hardcode.
        $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
        $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

        $timestamp = time();
        $nonceStr = $this->createNonceStr();

        // 这里参数的顺序要按照 key 值 ASCII 码升序排序
        $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";

        $signature = sha1($string);

        $signPackage = array(
            "appId"     => $this->appId,
            "nonceStr"  => $nonceStr,
            "timestamp" => $timestamp,
            "url"       => $url,
            "signature" => $signature,
            "rawString" => $string
        );
        return $signPackage;
    }

    private function createNonceStr($length = 16) {
        $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        $str = "";
        for ($i = 0; $i < $length; $i++) {
            $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
        }
        return $str;
    }

    private function getJsApiTicket() {
        // jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例
        $data = json_decode($this->get_php_file("jsapi_ticket.php"));
        if ($data->expire_time < time()) {
            $accessToken = $this->getAccessToken();
            // 如果是企业号用以下 URL 获取 ticket
            // $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken";
            $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";
            $res = json_decode($this->httpGet($url));
            $ticket = $res->ticket;
            if ($ticket) {
                $data->expire_time = time() + 7000;
                $data->jsapi_ticket = $ticket;
                $this->set_php_file("jsapi_ticket.php", json_encode($data));
            }
        } else {
            $ticket = $data->jsapi_ticket;
        }

        return $ticket;
    }

    private function getAccessToken() {
        // access_token 应该全局存储与更新,以下代码以写入到文件中做示例
        $data = json_decode($this->get_php_file("access_token.php"));
        if ($data->expire_time < time()) {
            // 如果是企业号用以下URL获取access_token
            // $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret";
            $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";
            $res = json_decode($this->httpGet($url));
            $access_token = $res->access_token;
            if ($access_token) {
                $data->expire_time = time() + 7000;
                $data->access_token = $access_token;
                $this->set_php_file("access_token.php", json_encode($data));
            }
        } else {
            $access_token = $data->access_token;
        }
        return $access_token;
    }

    private function httpGet($url) {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_TIMEOUT, 500);
        // 为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,必须使用下面2行代码打开ssl安全校验。
        // 如果在部署过程中代码在此处验证失败,请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);
        curl_setopt($curl, CURLOPT_URL, $url);

        $res = curl_exec($curl);
        curl_close($curl);

        return $res;
    }

    private function get_php_file($filename) {
        return trim(substr(file_get_contents($filename), 15));
    }
    private function set_php_file($filename, $content) {
        $fp = fopen($filename, "w");
        fwrite($fp, "<?php exit();?>" . $content);
        fclose($fp);
    }
}

务必先拿到数据后注册给JSconfig,否则微信JSSDK是无效的

等你一切准备得当的时候请打开网页调试里的console来查看效果

正确调用的情况:
这里写图片描述

到这里所有的准备工作就完成了


图片选择

调用JSSDK的图片接口

wx.chooseImage({
            count: 1,
            success: function (res) {
                //选择图片成功后
                images.localId = res.localIds;//安卓可以直接使用localIds 预览图片
                if(res.localIds.indexOf("wxlocalresource") != -1){
                    res.localIds = res.localIds.replace("wxlocalresource", "wxLocalResource");
                }
              )};  
               //以下的适配IOS
               //先使用阅览接口(适配IOSWKWebview版本)
                    wx.getLocalImgData({
                        localId: images.localId[i], // 图片的localID
                        success: function (res) {
                            var localData = res.localData; // localData是图片的base64数据,可以用img标签显示
                            $("#chooseImage").parent().before("<li class='upload_action'><img src='"+localData+"'/></li>");
                        }

                    });

图片上传

直接采用递归方法来上传多张图片

function upload() {
    wx.uploadImage({
                        localId: images.localId[i].toString(),
                        isShowProgressTips: 1, // 默认为1,显示进度提示
                        success: function (res) {
                            i++;
                            var media_id = res.serverId;

                            images.serverId.push(res.serverId);//上传到了服务器的ID

                            if (i < length) {
                                upload();
                            }
                        },
                        fail: function (res) {
                            alert(JSON.stringify(res));
                        }
                    });

}

将上传到服务器的图片下载到本地项目

public function getmedia(){
        $media_id = get.sevrid;//前端返回的上传后的媒体id
        $weixin = new Weixinpay(); //实例化微信类
        $access_token = $weixin->getToken(); //获取token

        $url = "https://api.weixin.qq.com/cgi-bin/media/get?access_token=".$access_token."&media_id=".$media_id;
        //获取微信“获取临时素材”接口返回来的内容(即刚上传的图片)
        $a = file_get_contents($url);
        //echo $a;
        $filename = date('YmdHis').rand(1000,9999).'.jpg';
        //以读写方式打开一个文件,若没有,则自动创建
        $resource = fopen($_SERVER["DOCUMENT_ROOT"].'/Uploads/User_img/'.$filename, 'w+');
        //将图片内容写入上述新建的文件
        fwrite($resource, $a);
        //关闭资源
        fclose($resource);
        echo '/Car/Common/Uploads/User_img/'.$filename;
    }

通过以上方法我们能达到 用户用微信自带的上传图片系统上传到我们自己服务器上


完整代码

var images = {
        localId: [],
        serverId: []
    };
    choose.onclick = function(){
        wx.chooseImage({
            count: 1,
            success: function (res) {
                //选择图片成功后
                images.localId = res.localIds;
                if(res.localIds.indexOf("wxlocalresource") != -1){
                    res.localIds = res.localIds.replace("wxlocalresource", "wxLocalResource");
                }
                var i = 0, length = images.localId.length;

                function upload() {
                    //先使用阅览接口(适配IOSWKWebview版本)
                    wx.getLocalImgData({
                        localId: images.localId[i], // 图片的localID
                        success: function (res) {
                            var localData = res.localData; // localData是图片的base64数据,可以用img标签显示
                            $("#chooseImage").parent().before("<li class='upload_action'><img src='"+localData+"'/></li>");
                        }

                    });
                    wx.uploadImage({
                        localId: images.localId[i].toString(),
                        isShowProgressTips: 1, // 默认为1,显示进度提示
                        success: function (res) {
                            i++;
                            var media_id = res.serverId;

                            images.serverId.push(res.serverId);
                            $.ajax({
                                url:'getmedia.php',
                                data:{'mid':res.serverId.toString()},
                                type:'get',
                                success:function(res){
                                    $("input[name='qu_img']").val(res);
                                    $("#chooseImage").hide();
                                }

                            });
                            if (i < length) {
                                upload();
                            }
                        },
                        fail: function (res) {
                            alert(JSON.stringify(res));
                        }
                    });

                }
                upload();
            }
        });

    }

演示

这里写图片描述

讨论和询问可以加QQ

1577452412

2019-03-09 14:54:05 Jonty1024 阅读数 505
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27772 人正在学习 去看看 秦子恒

使用TBS Studio进行微信公众号真机调试

目前在微信公众号开发中大家都很了解微信开发者工具,在早期的微信开发者工具中有移动调试功能,让手机通过代理的方式开通移动调试,但是最新版本的微信开发者工具中移除了移动调试功能。

 

image.png

 

在微信公众号开发的实际过程中,因为网络部署、证书等种种原因会引起某些手机兼容性问题,这时候微信开发者工具就爱莫能助了,如何解决真机调试的问题,那就必须借助TBS Studio。

TBS Studio是什么

TBS Studio是面向基于TBS的Web开发者和移动应用开发商(包括微信、手Q,三方App等)打造的开发服务整体解决方案,以提升广大开发者在真机环境下的开发效率,并帮助开发者分析和优化网页的设计,主要功能有网页Inspector调试,网页性能分析等。

TBS Studio在哪里

TBS Studio 下载

TBS Studio如何使用

  1. 下载安装。
    按照官方手册安装。
  2. 手机打开usb调试,连接到电脑

     

    image.png

     

    3.打开手机上的微信app并让微信保持在前台。
    4.打开TBS Studio,点击启动检测。

     

    image.png

  3. tbs弹出确认,点击确定。

     

    image.png

     

    6.设定tbs的调试状态,公众号里选择普通网页。

     

    image.png

  4. 使用微信扫二维码,根据提示操作,操作完成后重新开启微信app,打开要调试的公众号或h5链接。
    8点击tbs的启动调试,得到如下界面。(这里可能需要打开微信浏览器的TBS调试,方法是:微信打开这个网址 http://debugx5.qq.com/ ,选择“信息”→把TBS调试勾上)

     

     

     

    9.找到要调试的连接点击对应的inspect,打开开发者工具,剩下的就和电脑chrome一样了,这里操作界面是和手机同步的。

     

2019-10-30 10:09:20 xymxwz 阅读数 134
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27772 人正在学习 去看看 秦子恒

 也是偶然的情况遇到这个问题,然后就去查了一下。

用云存储图片做背景是无效的。为什么呢?

首先,可以明确fileID可以作为标签插入,但是不能作为字符串直接作为background-image使用。

所以我们可以的得出结论,微信小程序的中背景图,要不就是线上的完整地址https://....img/test.png  要不就转成的b64格式(建议先压缩,之前的篇幅中也推荐过压缩工具)。

那我就是想用这个云上图片怎么办?

可以用api获取链接后插入试一下。官方链接:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-client-api/storage/

另外:cloud是用于小程序内部显示。

 

 

 

2019-07-25 00:38:41 qq_41735944 阅读数 186
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27772 人正在学习 去看看 秦子恒

微信小程序通过background-image设置背景:线上图片,base64图片,不支持本地图片;
base64图片设置步骤如下:(这种方式如果图片过大,可能超内存)

1.在网站 http://imgbase64.duoshitong.com/ 上将图片转成base64格式的文本

2.在WXSS中使用以上文本:background-image: url(“data:image/png;base64,文本”);

3.为了是背景图片自适应宽高,可以做如下设置:

background-repeat:no-repeat; background-size:100% 100%;-moz-background-size:100% 100%;

ps:线上图片,我试过上传QQ空间,csdn
QQ空间:微信小程序开发者工具无法显示,手机上可以
CSDN:图片右下角有logo
暂时没找到完美方案,在那个wxss不拿手的年代帮助了我很多,现在也不怎么样,但是有WEUI就是微信官方的wxss标准之后就简单了,直接开发者工具导入就可以了,定位到dist,希望可以帮助到大家。
链接:https://pan.baidu.com/s/1UBA_S0ZmF8ZKFuCi_nyGQQ
提取码:wqfs
(万一不小心失效了,可以下面扣我,我会及时补上)

没有更多推荐了,返回首页