侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

小程序实现长按保存图片的方法

微信(小程序)  /  管理员 发布于 2年前   331

微信浏览器打开h5页面如果是img标签的话,长按会弹出保存图片的选项。但是微信小程序里面不可以。需要自己写这个功能。这个功能有两个点,一个是长按,一个是保存图片到本地。

1,、微信小程序提供了长按的事件,叫 bindlongpress

2、微信小程序同样提供了保存图片的接口,是 wx.saveImageToPhotosAlbum()

弄清楚了,我们可以开始做这个功能了,首先写wxml

然后就是js代码了

Page({ /**  * 页面的初始数据  */ data: {  url:"https://wechat.weixinzjit.com/costa/public/uploads/images/20190109/67b16149693920598435315fd0d5ab3e.jpg" }, // 长按保存图片 saveImg(e){   let url = e.currentTarget.dataset.url;   wx.saveImageToPhotosAlbum({     filePath:url,     success(res) {       console.log(res);     },     fail(res){      console.log(res);     }    }) }})

这样写感觉没问题,但是不行,为什么,看下面文档说明。

遇到了两个问题:

1、需要授权

2、路径不能是网络路径

一个问题一个问题解决,首先长按之后,不去保存图片,先去判断用户是否授权,这个接口就不多讲了,之前写过。

直接贴上代码

wx.getSetting({   success: (res) => {    if (!res.authSetting['scope.writePhotosAlbum']) {     wx.authorize({      scope: 'scope.writePhotosAlbum',      success:()=> {       // 同意授权      },      fail: (res) =>{       console.log(res);      }     })    }else{     // 已经授权了    }   },   fail: (res) =>{    console.log(res);   }  }) 

授权问题解决了以后,要处理另外一个问题,就是图片不能是网络路径。这个时候我们可以用到另外一个接口,叫 wx.getImageInfo()

通过文档看到,这个接口是可以接收网络路径的,返回的是本地路径。所以我们先用这个接口把网络路径转化一下,再拿去给wx.saveImageToPhotosAlbum用。

wx.getImageInfo({   src: url,   success:(res)=> {    let path = res.path;    wx.saveImageToPhotosAlbum({     filePath:path,     success(res) {       console.log(res);     },     fail:(res)=>{      console.log(res);     }    })   },   fail:(res)=> {    console.log(res);   }  })

所以整体的代码是这样子的

Page({ data: {   url:"https://wechat.weixinzjit.com/costa/public/uploads/images/20190109/67b16149693920598435315fd0d5ab3e.jpg" }, // 长按保存图片 saveImg(e){  let url = e.currentTarget.dataset.url;  //用户需要授权  wx.getSetting({   success: (res) => {    if (!res.authSetting['scope.writePhotosAlbum']) {     wx.authorize({      scope: 'scope.writePhotosAlbum',      success:()=> {       // 同意授权       this.saveImg1(url);      },      fail: (res) =>{       console.log(res);      }     })    }else{     // 已经授权了     this.saveImg1(url);    }   },   fail: (res) =>{    console.log(res);   }  })   }, saveImg1(url){  wx.getImageInfo({   src: url,   success:(res)=> {    let path = res.path;    wx.saveImageToPhotosAlbum({     filePath:path,     success:(res)=> {       console.log(res);     },     fail:(res)=>{      console.log(res);     }    })   },   fail:(res)=> {    console.log(res);   }  }) },})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

您可能感兴趣的文章:

  • 微信小程序点击图片实现长按预览、保存、识别带参数二维码、转发等功能
  • 微信小程序webview实现长按点击识别二维码功能示例
  • 小程序图片长按识别功能的实现方法
  • 微信小程序实现长按删除图片的示例


  • 上一条:
    .NET Core 微信小程序退款步骤――(统一退款)
    下一条:
    .NET Core 实现微信小程序支付功能(统一下单)
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 微信小程序前端使用七牛云官方SDK上传七牛云代码示例(0个评论)
    • 百度小程序审核未通过,真机审核存在点击返回键退出小程序...解决方式之一tabBar(0个评论)
    • 百度小程序详情页中使用wxapp-rich-text组件解析html标签并展示出来(0个评论)
    • 百度小程序列表中点击跳转详情页流程步骤(0个评论)
    • 百度小程序封装get post请求等全局函数及实现请求后端api数据循环展示功能(0个评论)
    • 近期文章
    • 2022 年 Laravel 状况调查(0个评论)
    • go语言中将CSV文件数据转换为JSON格式并保存到文件(0个评论)
    • go语言中将json格式数据文件保存到csv文件(0个评论)
    • go语言中实现堆排序算法代码示例(0个评论)
    • 在laravel框架中使用中间件 + 队列的方式记录请求日志(0个评论)
    • laravel框架常用速查表收集(0个评论)
    • go语言中查找最长不含有重复字符的字符串算法示例代码(0个评论)
    • laravel中where IN多列特殊查询类型代码示例(0个评论)
    • 使用Laravel Airdrop加速您的CI构建(0个评论)
    • go语言中日期时间戳比较功能示例代码(0个评论)
    • 近期评论
    • 博主 在

      centos7中Meili Search搜索引擎安装流程步骤中评论 @鹿   执行以下命令看看你的2.27版本是否存在strin..
    • 鹿 在

      centos7中Meili Search搜索引擎安装流程步骤中评论 这是我的错误提示,下载了对应的glibc-2.25.tar.gz后续按照教程操作..
    • 阿凡达123 在

      golang 怎么做热更新中评论 也可以看看这个:https://github.com/edwingeng/hot..
    • 博主 在

      hyperf框架常用命令-在centos7中退出命令及在docker容器中退出命令中评论 @路过的靓仔:cdn静态资源被墙,已修复..
    • GGGGGGGGG 在

      layui框架常用输入框介绍中评论 写的很好解决问题..
    • 2017-10
    • 2018-01
    • 2020-03
    • 2021-06
    • 2021-10
    • 2022-03
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客