首页 > 技术文章 > PHP微信公众号调用微信摄像头实现保存图片至自己服务器后返回图片链接

ffyun 2020-10-16 14:54 原文

前端

$(".jxs_sq_div_list img").on('click',function () {
    takePicture(this)
});
function takePicture(e) {
    wx.chooseImage({
        count: 1,
        needResult: 1,
        sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
        sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
        success: function (data) {
            localIds = data.localIds[0];   // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
            wx.getLocalImgData({
                localId: localIds, // 图片的localID
                success: function (res) {
                    var localData = res.localData; // localData是图片的base64数据,可以用img标签显示
                    $.ajax({
                        type: "post",
                        url: "{:U('Index/saveBase64Image')}",
                        data: {
                            "base64_image_content":localData
                        },
                        cache: false,
                        async : true,
                        dataType: "json",
                        success: function (rey)
                        {
                            $(e).attr('src',rey);
                        },
                        error:function (XMLHttpRequest, textStatus, errorThrown) {
                            layer.msg('请求失败!');
                        }
                    });

                },fail:function(res){
                    alert("显示失败");
                }
            });
        },
        fail: function (res) {
            ik_mobel_gb();
            alterShowMessage("操作提示", JSON.stringify(res), "1", "确定", "", "", "");
        }
    });
}

 

PHP

//base64图片上传
public function saveBase64Image(){
    $base64_image_content = $_POST['base64_image_content'];
    $fenge = explode(":",$base64_image_content);
    if(count($fenge) <  2){
        $base64_image_content = "data:image/png;base64,".$base64_image_content;
    }
    //设置图片保存路径
    $path = "Public/Uploads/".date("Y-m-d",time())."/";
    if (!is_dir($path)){ //判断目录是否存在 不存在就创建
        mkdir($path,0777,true);
    }
    $imageName = "25220_".date("His",time())."_".rand(1111,9999).'.png';
    $data =  $this->base64_image_content($base64_image_content,$path,$imageName);
    $data = C('url').$data;
    $this->ajaxReturn($data);
}

注意:如果为微信公众号的话需要先获取相机权限,否则无法调用相机接口!

推荐阅读