64 lines
1.2 KiB
JavaScript
64 lines
1.2 KiB
JavaScript
|
export const uniContext = (ctx) => {
|
||
|
ctx.uniDrawImage = ctx.drawImage
|
||
|
ctx.drawImage = (image,...agrs) => {
|
||
|
ctx.uniDrawImage(image.src, ...agrs)
|
||
|
}
|
||
|
return ctx
|
||
|
}
|
||
|
|
||
|
class Image {
|
||
|
constructor() {
|
||
|
this.currentSrc = null
|
||
|
this.naturalHeight = 0
|
||
|
this.naturalWidth = 0
|
||
|
this.width = 0
|
||
|
this.height = 0
|
||
|
this.tagName = 'IMG'
|
||
|
}
|
||
|
set src(src) {
|
||
|
this.currentSrc = src
|
||
|
uni.getImageInfo({
|
||
|
src,
|
||
|
success: (res) => {
|
||
|
this.naturalWidth = this.width = res.width
|
||
|
this.naturalHeight = this.height = res.height
|
||
|
this.onload()
|
||
|
},
|
||
|
fail: () => {
|
||
|
this.onerror()
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
get src() {
|
||
|
return this.currentSrc
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export const createImage = () => {
|
||
|
return new Image()
|
||
|
}
|
||
|
export function useCurrentPage() {
|
||
|
const pages = getCurrentPages();
|
||
|
return pages[pages.length - 1];
|
||
|
}
|
||
|
export const toDataURL = (canvasId, context, options = {}) => {
|
||
|
// #ifdef MP-QQ
|
||
|
// context = context.$scope
|
||
|
// #endif
|
||
|
// #ifdef MP-ALIPAY
|
||
|
context = ''
|
||
|
// #endif
|
||
|
return new Promise((resolve, reject) => {
|
||
|
uni.canvasToTempFilePath({
|
||
|
...options,
|
||
|
canvasId,
|
||
|
success: (res) => {
|
||
|
resolve(res.tempFilePath)
|
||
|
},
|
||
|
fail: (err) => {
|
||
|
reject(err)
|
||
|
}
|
||
|
}, context)
|
||
|
})
|
||
|
|
||
|
}
|