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插件市场上传了图片截取组件属性和参数文档里都说的比较清楚,大家可以直接使用,需要参考源码的可以直接获取实例代码到本地打开,里面的一些关键代码都做了注释,有什么不明白的可评论区留言一起交流。

  • 插件地址: 一款图片裁剪组件,根据uni-app官方的crop页面改善实现图片的全屏显示。

(完)

uni-app实现图片的上传和裁剪相关推荐

  1. php图片提交,php+js实现图片的上传、裁剪、预览、提交示例

    首先用到的语言是php.插件imgareaselect(),没有太多花哨的样式,index.php代码如下: function preview(img, selection) { $('#select ...

  2. uniapp做小程序的图片(视频)上传的组件封装

    最近在做小程序,最后想试试新不同的技术,所以选择了用uniapp做小程序. 要求实现多张图片的上传 ,可以限制图片上传的数量,图片预览,多次使用对图片的上传顺序排序 <template>& ...

  3. uni-app——小程序实现本地图片的上传以及身份证的智能识别

    文章目录 前言 一.示例图 二.实现过程 1.完成提交图片的api地址 2.获取本地图片 3.将本地图片上传至开发者服务器 三.具体实现代码 四.身份证的智能识别 总结 前言 上传本地图片的功能很常见 ...

  4. uniapp APP用户修改头像(上传到OSS)

    uniapp APP用户修改头像(上传到OSS) 点击头像进行修改头像 点击头像跳转到新的页面(先判断用户是否登陆),选择图片,确认上传. <image class="portrait ...

  5. .Net Core 图片文件上传下载

    当下.Net Core项目可是如雨后春笋一般发展起来,作为.Net大军中的一员,我热忱地拥抱了.Net Core并且积极使用其进行业务的开发,我们先介绍下.Net Core项目下实现文件上传下载接口. ...

  6. Flask实现图片的上传、下载及展示

    用Flask处理图片非常容易,这一篇学习一下图片的上传.下载及展示.还是以实例代码演示为主. 首先,实现一个简单的上传(过程中未做任何处理,只是为了演示) 点击选择图片,输入李四: HTML代码: & ...

  7. java 图片服务器 上传_Java实现把图片上传到图片服务器(nginx+vsftp)

    前言: 在我另一篇笔记中已经记载了如何用nginx + vsftp搭建图片服务器(请参考nginx + vsftp搭建图片服务器),并且用vsftp的客户端工具filezilla测试过已经可用.但是在 ...

  8. tornado完成一个简单的登录界面/图片的上传

    # 对程序中可能经常变化的值应该提取到配置文件中 # 创建文件夹在文件夹下创建file,充当配置文件 from tornado.httpserver import HTTPServer from to ...

  9. uniapp-上传图片、上传视频

    基于 uniapp 的应用上传图片/视频 资源的实现: 功能涉及的主要 uniapp API 如下: 1.选择图片:uni.chooseImage(OBJECT) | uni-app官网 2.选择视频 ...

最新文章

  1. 解释:什么是云计算?
  2. C语言 | C语言中main函数:int main( int argc, char* argv[] ) 中arg和argv参数的解析及调试
  3. [转] C# 绘制报表,使用Graphics.DrawString 方法
  4. Virident:PCIe SSD更能发挥闪存的特长
  5. VISSIM二次开发(Python)大作业总结2
  6. 计算机自带游戏关闭,win10系统自带小游戏关闭的办法
  7. comp3411 -prolog语言
  8. CA搭建实验和安全基础
  9. 研究将有pid和id的ListMapString,Map组成树
  10. python大一期末考试_python期末考试复习试卷
  11. 记一次perl使用lwp获取结果为乱码
  12. 为什么游戏流畅需要60帧,而电影流畅只需要24帧?
  13. 用python完成选股策略a股_Python 金融: 0亏损选股策略
  14. 用AI取代SGD?无需训练ResNet-50,AI秒级预测全部2400万个参数,准确率60% | NeurIPS 2021...
  15. 2016年生物3D打印八大重要成果
  16. 通用搜索引擎的垂直化倾向
  17. 【基于MAX78000的智能边缘应用设计大赛】
  18. 超好用Python小功能(持续更新中)
  19. Man Is Here For The Sake of Other Men 人是为了别人而活着
  20. 【FPGA入门七】电子锁

热门文章

  1. 官网显示500内部服务器有错误代码,【500错误】http 500 - 内部服务器错误(错误代码500)解决方法...
  2. 多系统管理问题显现 一体化管理走俏
  3. 当面试官说“还有哪些问题需要问”该如何回答?
  4. 牛客网js获取单行,多行输入
  5. Diocp学习笔记 3、服务端连接、发送、接收(以实际例子记录)(DELPHI 通讯框架)
  6. 寻找西北—东南线(类黑河—腾冲线)
  7. 时间序列模型R语言实现-批量建模,预测(ARIMA, 随机森林)
  8. Unity相机旋转和人物朝向
  9. uni-app - 禁用 APP 横屏旋转(用户操作行为)
  10. SQL Server最受欢迎技巧:解读DBA