zoukankan      html  css  js  c++  java
  • 微信小程序保存图片到相册

    先来看小程序中的保存图片到相册的api

    wx.saveImageToPhotosAlbum({
      filePath : "./test.png",   //这个只是测试路径,没有效果
      success(res) {
        console.log("success");
      },
      fail : function(res) {
        console.log(res);
      }
    })

    上面的saveImageToPhotosAlbum的用法是不能获取到文件的,因为filePath在官方的说法是可以是临时文件路径或永久文件路径。

    而"filePath : ./test.png"只是一个相对路径(相对小程序项目来说的一个路径),而我们需要的是临时文件路径或永久文件路径。

    下面说一下三者的区别:

    相对路径:小程序项目中相对的文件路径。

    临时文件路径:从网络上下载或其他形式生成的文件,但是只保存在内存中,没有保存到小程序目录中的文件路径。

    永久文件路径:小程序项目中文件中的全文件路径。

    注:相对路径和永久文件路径可能是同一个文件,只是引用的路径名不一样而已(一个是相对的,一个是绝对的)。

    其中临时文件路径我们可以这样获得来保存文件到相册:

    wx.downloadFile({
      url: 'https://example.com/audio/123',     //仅为示例,并非真实的资源
      success: function (res) {
        // 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容
        if (res.statusCode === 200) {
          wx.saveImageToPhotosAlbum({
            filePath: res.tempFilePath,
            success(res) {
              wx.showToast({
                title: '保存图片成功!',
              })
            },
            fail(res) {
              wx.showToast({
                title: '保存图片失败!',
              })
            }
          })
        }
      }
    })

    用downloadFile只可以获取网络上的图片资源;而getImageInfo则是全能类型,不管是网络上的图片资源,还是小程序中保存的图片。

    官方上的说法:getImageInfo的src参数的图片路径可以是相对路径、临时文件路径、存储文件路径(即上面说的全路径)、网络图片路径。

    wx.downloadFile({
      url: 'https://example.com/audio/123',     //仅为示例,并非真实的资源
      success: function (res) {
        // 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容
        if (res.statusCode === 200) {
          wx.saveImageToPhotosAlbum({
            filePath: res.tempFilePath,
            success(res) {
              wx.showToast({
                title: '保存图片成功!',
              })
            },
            fail(res) {
              wx.showToast({
                title: '保存图片失败!',
              })
            }
          })
        }
      }
    })

    总结:wx.getImageInfo功能更加强大;但是downloadFile则更加专业,因为downloadFile可以读取下载进度等功能。

  • 相关阅读:
    ASP.NET AJAX Sys未定义的解决方法
    幽默中的人生哲理
    我们总是试图抹去一些东西,比如记忆。然而,一切只是徒然。
    在webbrowser中操作js弹出的对话框 以及触发其它事件····
    Asp.Net :写入 、读取 、 删除、追加cookie数组?
    揭开ASP.NET中Cookie编程的奥秘
    多线程调度例子·····················
    winform编程——做过ini配置文件创建文件、添加配置项,修改配置项,删除配置项
    C# 比较二个时间差。Environment.TickCount
     WebBrowser控件捕捉DHTML事件
  • 原文地址:https://www.cnblogs.com/lguow/p/10361777.html
Copyright © 2011-2022 走看看