oss图片上传api_小程序开发日记 图片压缩

784afa611aa55ecd5e0c9a13c1301fa5.png

图片来自 Pixiv,Skitterphoto

今天我们探究一下在微信小程序中如何压缩一张图片。

首先来看看 日语助手 中都有哪些地方用到了图片压缩吧。

1)首页 -> 小测试 -> 手写假名 功能用到了一些Canvas和图片方面的API,其中在Canvas转图片时使用了可选择压缩程度的API的调用,也就是

wx.canvasToTempFilePath这个接口。

2)词本 中的日文OCR识别 功能,因为用到了第三方图片识别接口,需要先选择图片(wx.chooseImage),然后上传进行识别。从表面上看,wx.chooseImage这个API只提供选择图片的功能,但实际上它也具备一定的压缩功能。

那么在微信小程序端适合给图片做压缩的API到底有哪些呢?它们又有哪些特点呢?我们一一来看下。

● wx.chooseImage(Object object)

从本地相册选择图片或使用相机拍照。

805b069166717b7c680bd08fdece2fb8.png

指定sizeType为['compressed'],即代表从相册或相机拍照后的图片会执行压缩操作。

wx.chooseImage({  count: 1,  sizeType: ['compressed'],  sourceType: ['album', 'camera'],  success (res) {    const tempFilePaths = res.tempFilePaths  }})

● wx.compressImage(Object object)

压缩图片接口,可选压缩质量。基础库>=2.4.0

2ea3daf32a4616f71845eecf95d1dad7.png

使用这个API时需要注意基础库的版本。它可以指定压缩的质量[0-100],但只针对jpg,不支持网络图片。可以配合chooseImage来使用。

wx.chooseImage({  count: 1,  sizeType: ['compressed'],  sourceType: ['album', 'camera'],  success (res) {    const tempFilePaths = res.tempFilePaths    wx.compressImage({      src: tempFilePaths[0]      quality: 80,      success (compressRres) {        const tempFilePath = compressRres.tempFilePath       }    })  }})

● CameraContext.takePhoto(Object object)

拍摄照片。

a8841a0872e948f86a6ba0d57a1ca01a.png

其中quality(成像质量)参数可以设置为high, normal, 或者low,指定为low即代表可以进行一定程度的压缩。

const ctx = wx.createCameraContext()ctx.takePhoto({  quality: 'low',  success: (res) => {    const tempImagePath = res.tempImagePath  }})

除了以上几个API之外,还有一个API也可以变相地实现图片压缩处理,前提是需要一个Canvas组件,然后调用这个API将Canvas转换成图片。

wx.canvasToTempFilePath(Object object, Object this)

把当前画布指定区域的内容导出生成指定大小的图片。

9a2b77aeb3410946aa9ffddaa7be8b48.png

637d01ba35b8bdd165866f945065dabd.png

这个API只针对画布(Canvas)组件有效,但它有个好处就是可以指定输出图片的尺寸,而且还有个参数quality可以同时指定图片的质量(但仅对 jpg 有效)

wx.canvasToTempFilePath({  x: 100,  y: 200,  width: 50,  height: 50,  destWidth: 100,  destHeight: 100,  fileType: 'jpg,'  quality: 0.8,  canvasId: 'myCanvas',  success(res) {    const tempFilePath = res.tempFilePath  }})

以上就是微信小程序中涉及图片压缩的一些API介绍。

当然抛开微信小程序的API,压缩图片还有许多方式可以实现,比如使用自定义的裁剪功能,将大图片裁剪为小图片,然后再进行一次压缩。又如直接使用第三方库提供的图片裁剪功能,另外还可以直接将图片上传至第三方存储服务,比如七牛云、阿里,腾讯的OSS等,后端接口调取图片时直接使用他们提供的图片处理技术(url后拼接参数即可)。

6b0d60c7c3562fe442b4afe3726fed64.png

e2402aa2d9ec12136d425260293d8904.png 微信号:agooee    531839b07c8b98634a9d30b73b1d7562.png 微博:@fromyears

推荐阅读: 小程序开发日记 -- QQ小程序云开发 小程序开发日记 --  再看 QQ小程序 小程序开发日记 -- 猜个动画的二三事
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值