提交 e50cf8a2 编写于 作者: X xzs02

fix: 解决canvas相关API传入的宽高值不为整数时导致的错误。

上级 942d74bf
function getInt (method) {
return function (value, params) {
if (value) {
params[method] = Math.round(value)
}
}
}
export const canvasGetImageData = {
canvasId: {
type: String,
......@@ -5,19 +13,23 @@ export const canvasGetImageData = {
},
x: {
type: Number,
required: true
required: true,
validator: getInt('x')
},
y: {
type: Number,
required: true
required: true,
validator: getInt('y')
},
width: {
type: Number,
required: true
required: true,
validator: getInt('width')
},
height: {
type: Number,
required: true
required: true,
validator: getInt('height')
}
}
......@@ -32,18 +44,22 @@ export const canvasPutImageData = {
},
x: {
type: Number,
required: true
required: true,
validator: getInt('x')
},
y: {
type: Number,
required: true
required: true,
validator: getInt('y')
},
width: {
type: Number,
required: true
required: true,
validator: getInt('width')
},
height: {
type: Number
type: Number,
validator: getInt('height')
}
}
......@@ -55,23 +71,29 @@ const fileType = {
export const canvasToTempFilePath = {
x: {
type: Number,
default: 0
default: 0,
validator: getInt('x')
},
y: {
type: Number,
default: 0
default: 0,
validator: getInt('y')
},
width: {
type: Number
type: Number,
validator: getInt('width')
},
height: {
type: Number
type: Number,
validator: getInt('height')
},
destWidth: {
type: Number
type: Number,
validator: getInt('destWidth')
},
destHeight: {
type: Number
type: Number,
validator: getInt('destHeight')
},
canvasId: {
type: String,
......
......@@ -682,7 +682,14 @@ export function canvasToTempFilePath ({
})
return
}
imgData = new ImageData(new Uint8ClampedArray(imgData), data.width, data.height)
try {
imgData = new ImageData(new Uint8ClampedArray(imgData), data.width, data.height)
} catch (error) {
invoke(callbackId, {
errMsg: 'canvasToTempFilePath:fail'
})
return
}
var canvas = getTempCanvas()
canvas.width = data.width
canvas.height = data.height
......
......@@ -383,7 +383,7 @@ export default {
}) {
try {
if (!height) {
height = data.length / 4 / width
height = Math.round(data.length / 4 / width)
}
this.$refs.canvas.getContext('2d').putImageData(new ImageData(new Uint8ClampedArray(data), width, height), x, y)
} catch (error) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册