// components/ formula_recognition/ formula_recognition.js
const data = require('./data/data.js');
const create_cut_image_canvas = require('./functions/create_cut_image_canvas.js')
const cut_area_move_and_scale = require('./functions/cut_area_move_and_scale.js')
const watch_cut_area_overflow = require('./functions/watch_cut_area_overflow.js')
const get_cut_area_change_status = require('./functions/get_cut_area_change_status.js')
const create_cut_area = require('./functions/create_cut_area.js')
Component({
/**
* 组件的属性列表
*/
properties: {
},
/**
* 组件的初始数据
*/
data: data.data,
/**
* 组件生命周期
*/
lifetimes: {
ready: function() {
const that = this
// 获取屏幕宽高
wx.getSystemInfo({
success: function(res) {
that.data.window_heigt = res.windowHeight
that.data.window_width = res.windowWidth
that.data.pixelRatio = res.pixelRatio
},
})
}
},
/**
* 组件的方法列表
*/
methods: {
/**
* 创建图片裁剪画布和图片裁剪框
*/
create_cut_image_canvas: function(image_url) {
const that = this
create_cut_image_canvas.create_cut_image_canvas(image_url, that)
},
/**
* 裁剪框移动和缩放
*/
cut_area_move_and_scale: function(e) {
const that = this
cut_area_move_and_scale.cut_area_move_and_scale(e, that)
},
/**
* 画布重绘
*/
redraw: function(mode = 0) {
const that = this
// 清空画布
that.data.cut_image_canvas.clearRect(0, 0, that.data.cut_img_canvas_w, that.data.cut_img_canvas_h)
// 重绘图片
that.data.cut_image_canvas.drawImage(that.data.image_obj, 0, 0, that.data.cut_img_canvas_w, that.data.cut_img_canvas_h)
// 重绘裁剪框
// mode=0时重绘裁剪框
// mode=1时不绘制裁剪框,防止切图时裁剪框被切入
if (mode == 0) {
that.create_cut_area()
}
},
/**
* 判断裁剪框是否超出屏幕
*/
watch_cut_area_overflow: function() {
const that = this
return watch_cut_area_overflow.watch_cut_area_overflow(that)
},
/**
* 获取裁剪框四个缩放点位置
*/
get_scale_point_location: function() {
const that = this
return {
// 裁剪框左上角缩放点位置
left_up_point_x: that.data.cut_area.x,
left_up_point_y: that.data.cut_area.y,
// 左下角缩放点位置
left_down_point_x: that.data.cut_area.x,
left_down_point_y: that.data.cut_area.y + that.data.cut_area.cut_height,
// 右下角缩放点位置
right_down_point_x: that.data.cut_area.x + that.data.cut_area.cut_width,
right_down_point_y: that.data.cut_area.y + that.data.cut_area.cut_height,
// 右上角缩放点位置
right_up_point_x: that.data.cut_area.x + that.data.cut_area.cut_width,
right_up_point_y: that.data.cut_area.y
}
},
/**
* 根据触点位置辨别是移动还是缩放图片裁剪框
*/
get_cut_area_change_status: function(e) {
const that = this
get_cut_area_change_status.get_cut_area_change_status(e, that)
},
/**
* 创建裁剪区域
*/
create_cut_area: function() {
const that = this
create_cut_area.create_cut_area(that)
wx.hideLoading()
},
/**
* 拍照
*/
take_photo: function() {
const that = this
const ctx = wx.createCameraContext()
ctx.takePhoto({
quality: 'high',
success: (res) => {
// 隐藏相机
wx.showLoading({
title: '',
})
that.setData({
open_camera: false
})
that.create_cut_image_canvas(res.tempImagePath)
}
})
},
/**
* 图片裁剪
*/
cut_image: function() {
const that = this
that.redraw(1)
wx.canvasToTempFilePath({
// 除以像素比例,因为切图时使用的是相对像素
x: that.data.cut_area.x / that.data.pixelRatio,
y: that.data.cut_area.y / that.data.pixelRatio,
width: Math.round(that.data.cut_area.cut_width / that.data.pixelRatio),
height: Math.round(that.data.cut_area.cut_height / that.data.pixelRatio),
canvas: that.data.mycanvas,
filetype: 'png',
success: function(res) {
console.log("裁剪的图片", res.tempFilePath)
// 预览剪切好的图片
that.setData({
cut_image: res.tempFilePath
})
},
fail: function(err) {
console.log("裁剪图片失败", err)
wx.showModal({
title: '错误',
content: '剪切图片失败',
})
}
}, this)
},
/**
* 公式识别
*/
recognite: function() {
}
}
})
没有合适的资源?快使用搜索试试~ 我知道了~
微信小程序可移动缩放图片裁剪框代码实现
共10个文件
js:7个
wxss:1个
json:1个
需积分: 0 13 下载量 140 浏览量
2023-12-07
21:11:57
上传
评论
收藏 7KB RAR 举报
温馨提示
内容概要:本资源为博客(https://blog.csdn.net/anbuqi/article/details/105984258)的配套代码。图片裁剪框应用很普遍,也有很多成熟的组件,但是很多组件都是固定裁剪框的位置,通过移动图片来完成图片指定区域的裁剪。这种方法比较容易实现,但是同时存在灵活性不高,裁剪区域选择不精确,图片尺寸不能灵活改变的局限性。下面介绍一种通过使用微信小程序canvas来实现一个可移动缩放的图片裁剪框的方法。 适合人群:具备一定js和小程序开发基础,工作1-3年的研发人员。 能学到什么:实现自定义图片裁剪框,对用户上传的图片进行自定义裁剪。 阅读建议:上述代码已经封装成一个微信小程序自定义组件,方便集成到项目。
资源推荐
资源详情
资源评论
收起资源包目录
image_cut.rar (10个子文件)
image_cut
image_cut.wxss 596B
image_cut.json 48B
data
data.js 1KB
image_cut.js 5KB
image_cut.wxml 964B
functions
watch_cut_area_overflow.js 1KB
get_cut_area_change_status.js 2KB
create_cut_image_canvas.js 2KB
cut_area_move_and_scale.js 2KB
create_cut_area.js 3KB
共 10 条
- 1
资源评论
安布奇
- 粉丝: 305
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功