提交 e50cf8a2 编写于 作者: X xzs02

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

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