uni-app实现图片的上传和裁剪

48 篇文章 1 订阅
22 篇文章 7 订阅

uni-app实现图片的上传和裁剪

uni-app 实现图片的上传和裁剪,插件市场上已经有作者提供了相关的插件。这里主要介绍下我在自己开发图片上传和裁剪过程中遇到的一些问题。

图片上传

图片上传功能比较简单,uni-app官方提供了完整的API介绍和案列。但是在使用过程中有几个问题要注意。

  1. 通过uni.chooseImage可以从本地或者相机中选择一张至多张照片(具体参数设置见官网说明)uni.chooseimage
  2. sizeType 设置为压缩时 仅对jpg格式的图片有效。且当一次操作多张图片时,某些图片可能会丢失压缩效果。压缩比不可更改,微信小程序只能在手机上看到压缩效果,微信开发者工具无效。(其它平台未测试)
  3. 由于问题2图片压缩问题,建议在上传图片至服务器时先调用uni.compressImage方法压缩图片。同理微信小程序仅可压缩jpg格式图片。改方法微信开发者工具无效,仅真机调试有效果

图片裁剪

关于图片裁剪,网上有许多五花八门的方法。但是实现的核心都是利用canvas画布。
关于这方面的介绍推荐几个我浏览过的比较靠谱的博客:
uniApp实现选择图片裁剪设置用户头像
小程序的填坑小技巧之Canvas
微信小程序 canvas 实现图片拉伸、压缩与裁剪
canvas裁剪原理
原生js+canvas实现裁剪图片的功能
以上几篇文章基本上将图片裁剪的原理和方法将的比较透彻了,下面我主要记录一下我在实现上遇到的一些问题。

参考组件

我参考的是插件市场上可以拖动缩放的头像截取组件
但是我要强调一点,该组件有很多坑,给我的感觉像是一个半成品,里面有很多方法都存在问题或者说是版本更新带来的问题,大家慎用。我才用他的原因是因为作者才用了可拖动区域来实现裁剪,给我的感觉是比其他方法操作体验更好。

两个错误的方法

  1. uni.createCanvasContex该接口需要传递第二个参数this,具体使用方法:let ctx = uni.createCanvasContext("picture-canvas",this);
  2. uni.canvasToTempFilePath同样需要第二个参数this,使用方法:uni.canvasToTempFilePath({ },this)
  3. other :作者在组件的methods定义两个方法onShow和onHide和页面的生命周期函数命名冲突,需要换个名称。
    过段时间,代码优化完成之后再贴代码!

2021-09-18 更新

代码来了

不好意思,最近看到有网页评论留言才发现之前说的贴代码的事情一直没有补,我在uni插件市场上传了图片截取组件属性和参数文档里都说的比较清楚,大家可以直接使用,需要参考源码的可以直接获取实例代码到本地打开,里面的一些关键代码都做了注释,有什么不明白的可评论区留言一起交流。


(完)

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mingyong.g

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值