Taro图片裁剪

添加页面

添加页面需要在app.js中配置config下的pages,添加你的页面所在位置即可。 详情可参见微信官方文档

调用相机接口实现拍照功能

要使用微信的相机组件,需要先创建一个上下文CameraContext对象。

Taro.createCameraContext()//返回值是一个CameraContext对象

拍照函数

takePhoto=()=> {
    let { ctx} = this.state;//获取CameraContext对象
      ctx.takePhoto({
        quality: "high",
        success: (res) => {
           console.log(res.tempImagePath);//拍照成功后传回的照片路径
          Taro.redirectTo({
            url: `../copper/index?src=${res.tempImagePath}`//带照片参数跳转页面
          })

        },
        fail: (e) => {
          console.log(e);
        }
      })

  }

在render函数中返回一个camera组件,并为其中的拍照按钮添加点击拍照事件

return (
        <View className='view'>
           <Camera   className='camera'  flash='off'>
              <CoverView class='cover-1' onClick={this.takePhoto} >
              </CoverView>
            </Camera>
        </View>
    )

camera组件的主要属性方法参见微信官方文档-camera

Canvas

在实现图片裁剪功能时运用到原生组件Canvas(画布),主要用到的函数有:

创建 canvas 的绘图上下文 CanvasContext 对象

const ctx=Taro.createCanvasContext('myCanvas')

绘制图像到画布

ctx.drawImage(imageResource, dx, dy, dWidth, dHeight)//dx是

将之前在绘图上下文中的描述(路径、变形、样式)画到 canvas 中。

ctx.draw()

把当前画布指定区域的内容导出生成指定大小的图片。 (在 draw() 回调里调用该方法才能保证图片导出成功)

Taro.canvasToTempFilePath({
     x: 100,//指定的画布区域的左上角横坐标
     y: 200,//指定的画布区域的左上角纵坐标
     width: 50,//指定的画布区域的宽度
     height: 50,//指定的画布区域的高度
     destWidth: 100,//输出的图片的宽度
     destHeight: 100,//输出的图片的高度
     canvasId: 'myCanvas',//画布标识,传入 canvas 组件的 canvas-id
     success(res) {//接口调用成功的回调函数
       console.log(res.tempFilePath)
    },
    fail(){
         console.log(res.tempFilePath)
     }
})

微信小程序转Taro

微信原生小程序转 Taro 的操作非常简单, 首先必须安装使用 npm i -g @tarojs/cli 安装 Taro 命令行工具, 其次在命令行中定位到小程序项目的根目录,根目录中运行:

 taro convert

即可完成转换。转换后的代码保存在根目录下的 taroConvert 文件夹下。 你需要定位到 taroConvert 目录执行 npm install 命令之后就可以使用 taro build 命令编译到对应平台的代码。 转换后的页面看起来就像普通的 Taro 组件, 最重要的区别就在于 @withWeapp() 这个装饰器, 你可以将它理解为转换代码的运行时, @withWeapp() 会增加一些原来 Taro 没有方法和属性, 例如:

this.setData

转换后的 this.setData 的 API 相当于小程序的 this.setData 的 polyfill,他和 this.setState 最大的区别就在于,this.setData 之后 data 的数据是同步更新,而渲染是异步更新,而 setState 两者 都是异步的。 更多convert相关参见Taro文档-微信小程序转Taro

results matching ""

    No results matching ""