提交 fea90693 编写于 作者: D DCloud_LXH

fix(app): canvasPutImageData、canvasGetImageData

上级 fd3134d3
......@@ -16,6 +16,6 @@
"devDependencies": {
"@dcloudio/uni-shared": "3.0.0-alpha-3021320211123002",
"@types/pako": "^1.0.2",
"pako": "^2.0.3"
"pako": "^1.0.11"
}
}
......@@ -33,7 +33,7 @@ import { getPageIdByVm, getCurrentPageVm } from '@dcloudio/uni-core'
import { TEMP_PATH } from '@dcloudio/uni-platform'
// import pako from 'pako'
import pako from 'pako'
//#endregion
//#region UniServiceJSBridge
......@@ -1049,15 +1049,11 @@ export const canvasGetImageData =
let imgData = data.data
if (imgData && imgData.length) {
if (__PLATFORM__ === 'app' && data.compressed) {
import('pako').then((pako) => {
imgData = pako.inflateRaw(imgData) as any
delete data.compressed
data.data = new Uint8ClampedArray(imgData) as any
resolve(data)
})
imgData = pako.inflateRaw(imgData) as any
}
data.data = new Uint8ClampedArray(imgData) as any
}
delete data.compressed
resolve(data)
}
operateCanvas(
......@@ -1114,14 +1110,12 @@ export const canvasPutImageData =
__PLATFORM__ === 'app' &&
(plus.os.name !== 'iOS' || typeof __WEEX_DEVTOOL__ === 'boolean')
) {
return import('pako').then((pako) => {
data = pako.deflateRaw(data as any, { to: 'string' }) as any
compressed = true
operate()
})
data = pako.deflateRaw(data as any, { to: 'string' }) as any
compressed = true
} else {
// fix ... 操作符
data = Array.prototype.slice.call(data)
}
// fix ... fix what?
data = Array.prototype.slice.call(data)
operate()
},
CanvasPutImageDataProtocol,
......
......@@ -33,7 +33,7 @@ const rollupPlugins = [
_NODE_JS_: 0,
},
// 忽略 pako 内部条件编译
exclude: ['**/*/pako.esm.mjs'],
exclude: ['**/pako/**/*.js'],
}),
babel({
babelHelpers: 'bundled',
......
......@@ -18,6 +18,7 @@
},
"gitHead": "33e807d66e1fe47e2ee08ad9c59247e37b8884da",
"devDependencies": {
"@dcloudio/uni-shared": "3.0.0-alpha-3021320211123002"
"@dcloudio/uni-shared": "3.0.0-alpha-3021320211123002",
"pako": "^1.0.11"
}
}
......@@ -18,6 +18,7 @@ import ResizeSensor from '../resize-sensor'
import { useNativeEvent, NativeEventTrigger } from '../../helpers/useEvent'
import { pixelRatio, wrapper, initHidpi } from '../../helpers/hidpi'
import { once } from '@dcloudio/uni-shared'
import pako from 'pako'
const initHidpiOnce = /*#__PURE__*/ once(() => {
return __NODE_JS__ ? onMounted(initHidpi) : initHidpi()
......@@ -561,7 +562,6 @@ function useMethods(
} else {
const imgData = context.getImageData(0, 0, destWidth, destHeight)
if (__PLATFORM__ === 'app') {
const pako = require('pako') // eslint-disable-line no-restricted-globals
data = pako.deflateRaw(imgData.data as any, { to: 'string' })
compressed = true
} else {
......@@ -608,15 +608,14 @@ function useMethods(
resolve: (res: any) => void
) {
try {
if (__PLATFORM__ === 'app' && compressed) {
data = pako.inflateRaw(data) as any
}
if (!height) {
height = Math.round(data.length / 4 / width)
}
const canvas = getTempCanvas(width, height)
const context = canvas.getContext('2d')!
if (__PLATFORM__ === 'app' && compressed) {
const pako = require('pako') // eslint-disable-line no-restricted-globals
data = pako.inflateRaw(data) as any
}
context.putImageData(
new ImageData(new Uint8ClampedArray(data), width, height),
0,
......
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册