From bd887825e75f3927b53df02ca3686966633f4152 Mon Sep 17 00:00:00 2001 From: zhoulisheng1 Date: Mon, 25 Sep 2023 14:31:45 +0800 Subject: [PATCH] =?UTF-8?q?1.=E7=BC=96=E8=AF=91=E9=94=99=E8=AF=AF=E6=95=B4?= =?UTF-8?q?=E6=94=B9,=E4=B8=BB=E8=A6=81=E6=B6=89=E5=8F=8AThreadWorker?= =?UTF-8?q?=E5=92=8C=E4=B8=80=E4=BA=9B=E6=8E=A5=E5=8F=A3=E5=91=BD=E5=90=8D?= =?UTF-8?q?=E5=8D=95=E8=AF=8D=E6=8B=BC=E5=86=99=E9=94=99=E8=AF=AF=202.?= =?UTF-8?q?=E7=BC=96=E8=AF=91=E9=94=99=E8=AF=AF=E6=95=B4=E6=94=B9,?= =?UTF-8?q?=E4=B8=BB=E8=A6=81=E6=B6=89=E5=8F=8Acontext=E5=AF=B9=E8=B1=A1?= =?UTF-8?q?=E8=BD=AC=E6=8D=A2=E4=B8=BAObject,Object=E5=86=8D=E6=AC=A1?= =?UTF-8?q?=E8=BD=AC=E6=8D=A2=E4=B8=BAabilityContext=E5=A3=B0=E6=98=8E?= =?UTF-8?q?=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhoulisheng1 --- .../main/ets/pages/basicTestFileIOPage.ets | 8 ++-- .../main/ets/pages/basicTestMediaImage.ets | 11 ++--- .../pages/basicTestResourceManagerPage.ets | 5 ++- entry/src/main/ets/pages/compressPage.ets | 43 ++++++++++--------- entry/src/main/ets/pages/cropImagePage2.ets | 5 ++- entry/src/main/ets/pages/gifTestCasePage.ets | 13 ++++-- entry/src/main/ets/pages/index.ets | 6 ++- entry/src/main/ets/pages/pngjTestCasePage.ets | 17 ++++---- entry/src/main/ets/pages/svgTestCasePage.ets | 5 ++- entry/src/main/ets/pages/tempUrlTestPage.ets | 8 +++- .../main/ets/pages/testGifDontAnimatePage.ets | 6 ++- .../ets/pages/testGifLoadWithWorkerPage.ets | 4 +- .../pages/testImageKnifeOptionChangedPage.ets | 6 ++- .../testImageKnifeOptionChangedPage3.ets | 6 ++- .../testImageKnifeOptionChangedPage5.ets | 6 ++- entry/src/main/ets/pages/testPreloadPage.ets | 20 ++++----- .../ets/components/imageknife/ImageKnife.ets | 7 +-- .../imageknife/ImageKnifeGlobal.ets | 2 +- .../imageknife/compress/CompressBuilder.ets | 11 ++--- .../components/imageknife/compress/Engine.ets | 2 +- .../compress/listener/OnCompressListener.ets | 2 +- .../networkmanage/DownloadClient.ets | 5 ++- .../resourcemanage/ParseResClient.ets | 3 +- .../transform/MaskTransformation.ets | 3 +- .../imageknife/utils/ColorUtils.ets | 3 +- .../components/imageknife/utils/FastBlur.ets | 2 +- .../imageknife/utils/gif/GIFParseImpl.ets | 4 +- 27 files changed, 128 insertions(+), 85 deletions(-) diff --git a/entry/src/main/ets/pages/basicTestFileIOPage.ets b/entry/src/main/ets/pages/basicTestFileIOPage.ets index f3695c0..aabc863 100644 --- a/entry/src/main/ets/pages/basicTestFileIOPage.ets +++ b/entry/src/main/ets/pages/basicTestFileIOPage.ets @@ -16,7 +16,7 @@ import { FileUtils, ImageKnifeGlobal} from '@ohos/imageknife' import resourceManager from '@ohos.resourceManager'; import { BusinessError } from '@ohos.base' - +import common from '@ohos.app.ability.common'; @Entry @Component struct basicTestFileIOPage { @@ -42,7 +42,7 @@ struct basicTestFileIOPage { .margin({ top: 10 }) .onClick(() => { - let data:string = (ImageKnifeGlobal.getInstance().getHapContext as Record).filesDir as string; + let data:string = (ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).filesDir as string; console.log('ImageKnife filesPath = ' + data) this.filePath = data this.appFilePath = data; @@ -52,7 +52,7 @@ struct basicTestFileIOPage { .margin({ top: 10 }) .onClick(() => { - let data:string = (ImageKnifeGlobal.getInstance().getHapContext as Record).cacheDir as string; + let data:string = (ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).cacheDir as string; console.log('ImageKnife cachesPath = ' + data) this.filePath = data this.appFilePath = data; @@ -80,7 +80,7 @@ struct basicTestFileIOPage { this.appFilePath = 'appFilePath未取到值,请按顺序从上往下,从左往右依次测试' return } - ((ImageKnifeGlobal.getInstance().getHapContext() as Record).resourceManager as resourceManager.ResourceManager) + ((ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).resourceManager as resourceManager.ResourceManager) .getMediaContent($r('app.media.gifSample').id) .then(data => { console.log('result.getMedia') diff --git a/entry/src/main/ets/pages/basicTestMediaImage.ets b/entry/src/main/ets/pages/basicTestMediaImage.ets index 2504d9f..089eec6 100644 --- a/entry/src/main/ets/pages/basicTestMediaImage.ets +++ b/entry/src/main/ets/pages/basicTestMediaImage.ets @@ -20,6 +20,7 @@ import { Base64 } from '@ohos/imageknife' import { ParseImageUtil } from '@ohos/imageknife' import { ImageKnifeGlobal } from '@ohos/imageknife' import { BusinessError } from '@ohos.base' +import common from '@ohos.app.ability.common'; @Entry @Component struct BasicTestMediaImage { @@ -31,7 +32,7 @@ struct BasicTestMediaImage { Flex({ direction: FlexDirection.Row }) { Button('本地资源jpg') .onClick(() => { - ((ImageKnifeGlobal.getInstance().getHapContext() as Record).resourceManager as resourceManager.ResourceManager) + ((ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).resourceManager as resourceManager.ResourceManager) .getMediaContent($r('app.media.jpgSample').id) .then(data => { let arrayBuffer = this.typedArrayToBuffer(data); @@ -47,7 +48,7 @@ struct BasicTestMediaImage { }).margin({ left: 15 }).backgroundColor(Color.Blue) Button('本地资源png') .onClick(() => { - ((ImageKnifeGlobal.getInstance().getHapContext() as Record).resourceManager as resourceManager.ResourceManager) + ((ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).resourceManager as resourceManager.ResourceManager) .getMediaContent($r('app.media.pngSample').id) .then(data => { let arrayBuffer = this.typedArrayToBuffer(data); @@ -63,7 +64,7 @@ struct BasicTestMediaImage { }).margin({ left: 15 }).backgroundColor(Color.Blue) Button('本地资源bmp') .onClick(() => { - ((ImageKnifeGlobal.getInstance().getHapContext() as Record).resourceManager as resourceManager.ResourceManager) + ((ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).resourceManager as resourceManager.ResourceManager) .getMediaContent($r('app.media.bmpSample').id) .then(data => { let arrayBuffer = this.typedArrayToBuffer(data); @@ -79,7 +80,7 @@ struct BasicTestMediaImage { }).margin({ left: 15 }).backgroundColor(Color.Blue) Button('本地资源webp') .onClick(() => { - ((ImageKnifeGlobal.getInstance().getHapContext() as Record).resourceManager as resourceManager.ResourceManager) + ((ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).resourceManager as resourceManager.ResourceManager) .getMediaContent($r('app.media.jpgSample').id) .then(data => { let arrayBuffer = this.typedArrayToBuffer(data); @@ -95,7 +96,7 @@ struct BasicTestMediaImage { }).margin({ left: 15 }).backgroundColor(Color.Blue) Button('本地资源gif') .onClick(() => { - ((ImageKnifeGlobal.getInstance().getHapContext() as Record).resourceManager as resourceManager.ResourceManager) + ((ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).resourceManager as resourceManager.ResourceManager) .getMediaContent($r('app.media.gifSample').id) .then(data => { let arrayBuffer = this.typedArrayToBuffer(data); diff --git a/entry/src/main/ets/pages/basicTestResourceManagerPage.ets b/entry/src/main/ets/pages/basicTestResourceManagerPage.ets index 9474ba5..edc59e8 100644 --- a/entry/src/main/ets/pages/basicTestResourceManagerPage.ets +++ b/entry/src/main/ets/pages/basicTestResourceManagerPage.ets @@ -19,6 +19,7 @@ import resourceManager from '@ohos.resourceManager'; import {Base64} from '@ohos/imageknife' import {ImageKnifeGlobal} from '@ohos/imageknife' import { BusinessError } from '@ohos.base' +import common from '@ohos.app.ability.common'; @Entry @Component struct BasicTestResourceManagerPage { @@ -32,7 +33,7 @@ struct BasicTestResourceManagerPage { Button('getMedia解析一张jpg图片') .margin({ top: 10 }) .onClick(() => { - ((ImageKnifeGlobal.getInstance().getHapContext() as Record).resourceManager as resourceManager.ResourceManager) + ((ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).resourceManager as resourceManager.ResourceManager) .getMediaContent($r('app.media.jpgSample') .id) .then(data => { @@ -49,7 +50,7 @@ struct BasicTestResourceManagerPage { Button('getMediaBase64解析一张png图片') .margin({ top: 10 }) .onClick(() => { - ((ImageKnifeGlobal.getInstance().getHapContext() as Record).resourceManager as resourceManager.ResourceManager) + ((ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).resourceManager as resourceManager.ResourceManager) .getMediaContentBase64($r('app.media.pngSample') .id) .then(data => { diff --git a/entry/src/main/ets/pages/compressPage.ets b/entry/src/main/ets/pages/compressPage.ets index f1c9d2f..e0cb3ad 100644 --- a/entry/src/main/ets/pages/compressPage.ets +++ b/entry/src/main/ets/pages/compressPage.ets @@ -94,17 +94,18 @@ struct CompressPage { let data = new Array(); data.push($r('app.media.jpgSample')) - console.info("asasd start compress") - (ImageKnifeGlobal.getInstance().getImageKnife()) - .compressBuilder() - .load(data) - .ignoreBy(100) - .get() - .then((path:string)=>{ - this.mAsyncPathHint = path; - this.mAsyncPath='file://' + path; - }) - ; + let imageKnife:ImageKnife|undefined = ImageKnifeGlobal.getInstance().getImageKnife() + if(imageKnife!=undefined) { + imageKnife + .compressBuilder() + .load(data) + .ignoreBy(100) + .get() + .then((path: string) => { + this.mAsyncPathHint = path; + this.mAsyncPath = 'file://' + path; + }); + } console.info("asasd start compress end") } private cropressRecource() { @@ -121,7 +122,7 @@ struct CompressPage { this.mResultText = "start" console.info("asasd start") }, - onScuccess:(p: PixelMap | null | undefined, path: string)=> { + onSuccess:(p: PixelMap | null | undefined, path: string)=> { if(p!=null && p!=undefined) { let pack = p; this.mRPixelMap = pack as PixelMap; @@ -136,14 +137,16 @@ struct CompressPage { } } console.info("asasd start compress") - - (ImageKnifeGlobal.getInstance().getImageKnife()) - .compressBuilder() - .load(data) - .ignoreBy(100) - .setRenameListener(rename) - .setCompressListener(listener) - .launch(); + let imageKnife:ImageKnife|undefined = ImageKnifeGlobal.getInstance().getImageKnife() + if(imageKnife != undefined) { + (ImageKnifeGlobal.getInstance().getImageKnife()) + .compressBuilder() + .load(data) + .ignoreBy(100) + .setRenameListener(rename) + .setCompressListener(listener) + .launch(); + } console.info("asasd start compress end") } } \ No newline at end of file diff --git a/entry/src/main/ets/pages/cropImagePage2.ets b/entry/src/main/ets/pages/cropImagePage2.ets index c1fe51b..fc76184 100644 --- a/entry/src/main/ets/pages/cropImagePage2.ets +++ b/entry/src/main/ets/pages/cropImagePage2.ets @@ -22,7 +22,8 @@ import { CropCallback } from '@ohos/imageknife' import { FileUtils } from '@ohos/imageknife' import { ImageKnifeGlobal } from '@ohos/imageknife' import { BusinessError } from '@ohos.base' - +import resourceManager from '@ohos.resourceManager'; +import common from '@ohos.app.ability.common' @Entry @Component @@ -42,7 +43,7 @@ export struct CropImagePage2 { Column() { Button('点击解析图片') .onClick(() => { - ((ImageKnifeGlobal.getInstance().getHapContext() as Record).resourceManager as resourceManager.ResourceManager) + ((ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).resourceManager as resourceManager.ResourceManager) .getMediaContent($r('app.media.bmpSample').id) .then((data:Uint8Array) => { let arrayBuffer = FileUtils.getInstance().uint8ArrayToBuffer(data); diff --git a/entry/src/main/ets/pages/gifTestCasePage.ets b/entry/src/main/ets/pages/gifTestCasePage.ets index 5d029aa..cb5bf16 100644 --- a/entry/src/main/ets/pages/gifTestCasePage.ets +++ b/entry/src/main/ets/pages/gifTestCasePage.ets @@ -14,9 +14,11 @@ */ import {GIFParseImpl} from '@ohos/imageknife' import {ImageKnifeGlobal} from '@ohos/imageknife' +import {ImageKnife} from '@ohos/imageknife' import worker from '@ohos.worker'; import resourceManager from '@ohos.resourceManager'; import { BusinessError } from '@ohos.base' +import common from '@ohos.app.ability.common'; @Entry @Component struct gifTestCasePage { @@ -30,7 +32,7 @@ struct gifTestCasePage { Flex({direction:FlexDirection.Row}){ Button("加载gif图片") .onClick(()=>{ - ((ImageKnifeGlobal.getInstance().getHapContext() as Record).resourceManager as resourceManager.ResourceManager) + ((ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).resourceManager as resourceManager.ResourceManager) .getMediaContent($r('app.media.test').id) .then(data => { console.log('basicTestFileIOPage - 本地加载资源 解析后数据data length= ' + data.byteLength) @@ -52,7 +54,7 @@ struct gifTestCasePage { }).margin({left:5}).backgroundColor(Color.Blue) Button("加载gif图片自带worker") .onClick(()=>{ - ((ImageKnifeGlobal.getInstance().getHapContext() as Record).resourceManager as resourceManager.ResourceManager) + ((ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).resourceManager as resourceManager.ResourceManager) .getMediaContent($r('app.media.gifSample_single_frame').id) .then(data => { console.log('basicTestFileIOPage - 本地加载资源 解析后数据data length = ' + data.byteLength) @@ -78,7 +80,7 @@ struct gifTestCasePage { }).margin({left:5}).backgroundColor(Color.Blue) Button("加载gif图片全局配置worker") .onClick(()=>{ - ((ImageKnifeGlobal.getInstance().getHapContext() as Record).resourceManager as resourceManager.ResourceManager) + ((ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).resourceManager as resourceManager.ResourceManager) .getMediaContent($r('app.media.test').id) .then(data => { console.log('basicTestFileIOPage - 本地加载资源 解析后数据data length = ' + data.byteLength) @@ -121,7 +123,10 @@ struct gifTestCasePage { type: 'classic', name: 'ImageKnifeParseGIF' }) - (ImageKnifeGlobal.getInstance().getImageKnife()).setGifWorker(this.globalGifWorker) + let imageKnife:ImageKnife|undefined = ImageKnifeGlobal.getInstance().getImageKnife() + if(imageKnife != undefined) { + (ImageKnifeGlobal.getInstance().getImageKnife())?.setGifWorker(this.globalGifWorker) + } } aboutToDisappear(){ if(this.globalGifWorker){ diff --git a/entry/src/main/ets/pages/index.ets b/entry/src/main/ets/pages/index.ets index e4ad3e3..bc929ff 100644 --- a/entry/src/main/ets/pages/index.ets +++ b/entry/src/main/ets/pages/index.ets @@ -17,6 +17,7 @@ import { ImageKnifeComponent, ImageKnifeOption, ImageKnifeGlobal, + ImageKnife } from '@ohos/imageknife' import worker from '@ohos.worker'; @@ -92,7 +93,10 @@ struct IndexFunctionDemo { name: 'ImageKnifeParseGIF' }) // gif解析在子线程,请在页面构建后创建worker,注入imageknife - (ImageKnifeGlobal.getInstance().getImageKnife()).setGifWorker(this.globalGifWorker) + let imageKnife:ImageKnife|undefined = ImageKnifeGlobal.getInstance().getImageKnife() + if(imageKnife != undefined) { + imageKnife?.setGifWorker(this.globalGifWorker) + } } aboutToDisappear(){ if(this.globalGifWorker){ diff --git a/entry/src/main/ets/pages/pngjTestCasePage.ets b/entry/src/main/ets/pages/pngjTestCasePage.ets index dd41224..390ddae 100644 --- a/entry/src/main/ets/pages/pngjTestCasePage.ets +++ b/entry/src/main/ets/pages/pngjTestCasePage.ets @@ -20,6 +20,7 @@ import featureability from '@ohos.ability.featureAbility' import ArkWorker from '@ohos.worker' import worker from '@ohos.worker'; import { BusinessError } from '@ohos.base' +import common from '@ohos.app.ability.common'; @Entry @Component struct PngjTestCasePage { @@ -52,8 +53,8 @@ struct PngjTestCasePage { Button(this.hint7).fontSize(30) .onClick(() => { - this.rootFolder = (ImageKnifeGlobal.getInstance().getHapContext() as Record).filesDir as string; - ((ImageKnifeGlobal.getInstance().getHapContext() as Record) + this.rootFolder = (ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).filesDir as string; + ((ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext) .resourceManager as resourceManager.ResourceManager) .getMediaContent($r('app.media.pngSample').id) .then(data => { @@ -94,8 +95,8 @@ struct PngjTestCasePage { - this.rootFolder = (ImageKnifeGlobal.getInstance().getHapContext() as Record).filesDir as string; - ((ImageKnifeGlobal.getInstance().getHapContext() as Record) + this.rootFolder = (ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).filesDir as string; + ((ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext) .resourceManager as resourceManager.ResourceManager) .getMediaContent($r('app.media.pngSample').id) @@ -140,8 +141,8 @@ struct PngjTestCasePage { Flex({ direction: FlexDirection.Row, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Button(this.hint9).fontSize(30) .onClick(() => { - this.rootFolder = (ImageKnifeGlobal.getInstance().getHapContext() as Record).filesDir as string; - ((ImageKnifeGlobal.getInstance().getHapContext() as Record) + this.rootFolder = (ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).filesDir as string; + ((ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext) .resourceManager as resourceManager.ResourceManager) .getMediaContent($r('app.media.pngSample').id) .then(data => { @@ -190,8 +191,8 @@ struct PngjTestCasePage { Button(this.hint10).fontSize(30) .onClick(() => { - this.rootFolder = (ImageKnifeGlobal.getInstance().getHapContext as Record).filesDir as string; - ((ImageKnifeGlobal.getInstance().getHapContext() as Record) + this.rootFolder = (ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).filesDir as string; + ((ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext) .resourceManager as resourceManager.ResourceManager) .getMediaContent($r('app.media.pngSample').id) .then(data => { diff --git a/entry/src/main/ets/pages/svgTestCasePage.ets b/entry/src/main/ets/pages/svgTestCasePage.ets index 2deb471..974c129 100644 --- a/entry/src/main/ets/pages/svgTestCasePage.ets +++ b/entry/src/main/ets/pages/svgTestCasePage.ets @@ -16,6 +16,7 @@ import {SVGParseImpl} from '@ohos/imageknife' import {ImageKnifeGlobal} from '@ohos/imageknife' import resourceManager from '@ohos.resourceManager'; import {BusinessError} from '@ohos.base' +import common from '@ohos.app.ability.common'; @Entry @Component struct svgTestCasePage { @@ -30,7 +31,7 @@ struct svgTestCasePage { Button("加载SVG图片") .onClick(()=>{ - ((ImageKnifeGlobal.getInstance().getHapContext() as Record).resourceManager as resourceManager.ResourceManager) + ((ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).resourceManager as resourceManager.ResourceManager) .getMediaContent($r('app.media.svgSample').id) .then((data:Uint8Array) => { console.log('basicTestFileIOPage - 本地加载资源 解析后数据data = ' + data) @@ -60,7 +61,7 @@ struct svgTestCasePage { Button("加载SVG图片") .onClick(()=>{ - ((ImageKnifeGlobal.getInstance().getHapContext() as Record).resourceManager as resourceManager.ResourceManager) + ((ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).resourceManager as resourceManager.ResourceManager) .getMediaContent($r('app.media.iconsvg').id) .then(data => { console.log('basicTestFileIOPage - 本地加载资源 解析后数据data = ' + data) diff --git a/entry/src/main/ets/pages/tempUrlTestPage.ets b/entry/src/main/ets/pages/tempUrlTestPage.ets index 07be472..3353fdc 100644 --- a/entry/src/main/ets/pages/tempUrlTestPage.ets +++ b/entry/src/main/ets/pages/tempUrlTestPage.ets @@ -17,6 +17,7 @@ import { ImageKnifeComponent, ImageKnifeOption, ImageKnifeGlobal, + ImageKnife, ImageKnifeDrawFactory, ScaleType } from '@ohos/imageknife' @@ -89,8 +90,11 @@ struct tempUrlTestPage { type: 'classic', name: 'ImageKnifeParseGIF' }) - // gif解析在子线程,请在页面构建后创建worker,注入imageknife - (ImageKnifeGlobal.getInstance().getImageKnife()).setGifWorker(this.globalGifWorker) + let imageKnife:ImageKnife|undefined = ImageKnifeGlobal.getInstance().getImageKnife() + if(imageKnife != undefined) { + // gif解析在子线程,请在页面构建后创建worker,注入imageknife + imageKnife.setGifWorker(this.globalGifWorker) + } } aboutToDisappear(){ if(this.globalGifWorker){ diff --git a/entry/src/main/ets/pages/testGifDontAnimatePage.ets b/entry/src/main/ets/pages/testGifDontAnimatePage.ets index 494a70a..69a56cc 100644 --- a/entry/src/main/ets/pages/testGifDontAnimatePage.ets +++ b/entry/src/main/ets/pages/testGifDontAnimatePage.ets @@ -15,6 +15,7 @@ import {ImageKnifeComponent} from '@ohos/imageknife' import {ImageKnifeOption} from '@ohos/imageknife' import {ImageKnifeGlobal} from '@ohos/imageknife' +import {ImageKnife} from '@ohos/imageknife' import {RotateImageTransformation} from '@ohos/imageknife' import worker from '@ohos.worker' @Entry @@ -90,7 +91,10 @@ struct TestGifDontAnimatePage { type: 'classic', name: 'ImageKnifeParseGIF' }) - (ImageKnifeGlobal.getInstance().getImageKnife()).setGifWorker(this.globalGifWorker) + let imageKnife : ImageKnife|undefined = ImageKnifeGlobal.getInstance().getImageKnife() + if(imageKnife!= undefined) { + imageKnife.setGifWorker(this.globalGifWorker) + } } aboutToDisappear(){ if(this.globalGifWorker){ diff --git a/entry/src/main/ets/pages/testGifLoadWithWorkerPage.ets b/entry/src/main/ets/pages/testGifLoadWithWorkerPage.ets index 83c990c..e2e7e3b 100644 --- a/entry/src/main/ets/pages/testGifLoadWithWorkerPage.ets +++ b/entry/src/main/ets/pages/testGifLoadWithWorkerPage.ets @@ -12,7 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { ImageKnife,ImageKnifeGlobal,ImageKnifeGlobal, ImageKnifeComponent, ImageKnifeOption } from '@ohos/imageknife' +import { ImageKnife,ImageKnifeGlobal, ImageKnifeComponent, ImageKnifeOption } from '@ohos/imageknife' import worker, { MessageEvents } from '@ohos.worker' import Prompt from '@system.prompt' @@ -100,7 +100,7 @@ struct TestGifLoadWithWorkerPage { Button('加载gif') .margin({ top: 16 }) .onClick(() => { - console.log("ImageKnifeComponent button 加载gif onClick()") + (ImageKnifeGlobal.getInstance().getImageKnife()).setGifWorker(undefined) diff --git a/entry/src/main/ets/pages/testImageKnifeOptionChangedPage.ets b/entry/src/main/ets/pages/testImageKnifeOptionChangedPage.ets index 9c3d9e9..687a98b 100644 --- a/entry/src/main/ets/pages/testImageKnifeOptionChangedPage.ets +++ b/entry/src/main/ets/pages/testImageKnifeOptionChangedPage.ets @@ -15,6 +15,7 @@ import {ImageKnifeComponent} from '@ohos/imageknife' import {ImageKnifeOption} from '@ohos/imageknife' import {ImageKnifeGlobal} from '@ohos/imageknife' +import {ImageKnife} from '@ohos/imageknife' import {RotateImageTransformation} from '@ohos/imageknife' import ArkWorker from '@ohos.worker' import worker from '@ohos.worker' @@ -191,7 +192,10 @@ struct TestImageKnifeOptionChangedPage { type: 'classic', name: 'ImageKnifeParseGIF' }) - (ImageKnifeGlobal.getInstance().getImageKnife()).setGifWorker(this.globalGifWorker) + let imageKnife:ImageKnife|undefined = ImageKnifeGlobal.getInstance().getImageKnife() + if(imageKnife != undefined) { + imageKnife.setGifWorker(this.globalGifWorker) + } } aboutToDisappear(){ if(this.globalGifWorker){ diff --git a/entry/src/main/ets/pages/testImageKnifeOptionChangedPage3.ets b/entry/src/main/ets/pages/testImageKnifeOptionChangedPage3.ets index 1f3531a..ccb6b5a 100644 --- a/entry/src/main/ets/pages/testImageKnifeOptionChangedPage3.ets +++ b/entry/src/main/ets/pages/testImageKnifeOptionChangedPage3.ets @@ -15,6 +15,7 @@ import {ImageKnifeComponent} from '@ohos/imageknife' import {ImageKnifeOption} from '@ohos/imageknife' import {ImageKnifeGlobal} from '@ohos/imageknife' +import {ImageKnife} from '@ohos/imageknife' import {ScaleType} from '@ohos/imageknife' import {RotateImageTransformation} from '@ohos/imageknife' import {GrayscaleTransformation} from '@ohos/imageknife' @@ -210,7 +211,10 @@ struct TestImageKnifeOptionChangedPage3 { type: 'classic', name: 'ImageKnifeParseGIF' }) - (ImageKnifeGlobal.getInstance().getImageKnife()).setGifWorker(this.globalGifWorker) + let imageKnife:ImageKnife|undefined = ImageKnifeGlobal.getInstance().getImageKnife() + if(imageKnife != undefined) { + imageKnife.setGifWorker(this.globalGifWorker) + } } aboutToDisappear(){ if(this.globalGifWorker){ diff --git a/entry/src/main/ets/pages/testImageKnifeOptionChangedPage5.ets b/entry/src/main/ets/pages/testImageKnifeOptionChangedPage5.ets index 2009df8..ef672cd 100644 --- a/entry/src/main/ets/pages/testImageKnifeOptionChangedPage5.ets +++ b/entry/src/main/ets/pages/testImageKnifeOptionChangedPage5.ets @@ -18,6 +18,7 @@ import { ImageKnifeData, ImageKnifeGlobal, ImageKnifeOption, + ImageKnife, RotateImageTransformation, SketchFilterTransformation, ScaleTypeHelper, @@ -100,7 +101,10 @@ struct TestImageKnifeOptionChangedPage5 { type: 'classic', name: 'ImageKnifeParseGIF' }) - (ImageKnifeGlobal.getInstance().getImageKnife()).setGifWorker(this.globalGifWorker) + let imageKnife:ImageKnife|undefined = ImageKnifeGlobal.getInstance().getImageKnife() + if(imageKnife != undefined) { + imageKnife.setGifWorker(this.globalGifWorker) + } } aboutToDisappear(){ if(this.globalGifWorker){ diff --git a/entry/src/main/ets/pages/testPreloadPage.ets b/entry/src/main/ets/pages/testPreloadPage.ets index 7dcde4a..7924e71 100644 --- a/entry/src/main/ets/pages/testPreloadPage.ets +++ b/entry/src/main/ets/pages/testPreloadPage.ets @@ -154,7 +154,7 @@ struct TestPreloadPage { request.load('https://gd-hbimg.huaban.com/e0a25a7cab0d7c2431978726971d61720732728a315ae-57EskW_fw658') .setImageViewSize({ width: 300, height: 300 }) .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { - if (err && err.length > 0) { + if (err) { console.log('预加载网络资源gif 出现错误! err=' + err) } else { console.log('预加载网络资源gif成功! imageKnifedata=' + JSON.stringify(data)) @@ -186,7 +186,7 @@ struct TestPreloadPage { .setImageViewSize({ width: 300, height: 300 }) .dontAnimate() .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { - if (err && err.length > 0) { + if (err) { console.log('预加载网络资源gif静态 出现错误! err=' + err) } else { console.log('预加载网络资源gif静态成功! imageKnifedata=' + JSON.stringify(data)) @@ -305,7 +305,7 @@ struct TestPreloadPage { request.load($r('app.media.jpgSample')) .setImageViewSize({ width: 300, height: 300 }) .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { - if (err && err.length > 0) { + if (err) { console.log('预加载本地资源webp 出现错误! err=' + err) } else { console.log('预加载本地资源webp成功! imageKnifedata=' + JSON.stringify(data)) @@ -344,7 +344,7 @@ struct TestPreloadPage { request.load('https://hbimg.huabanimg.com/95a6d37a39aa0b70d48fa18dc7df8309e2e0e8e85571e-x4hhks_fw658/format/webp') .setImageViewSize({ width: 300, height: 300 }) .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { - if (err && err.length > 0) { + if (err) { console.log('预加载网络资源webp 出现错误! err=' + err) } else { console.log('预加载网络资源webp成功! imageKnifedata=' + JSON.stringify(data)) @@ -383,7 +383,7 @@ struct TestPreloadPage { request.load($r('app.media.bmpSample')) .setImageViewSize({ width: 300, height: 300 }) .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { - if (err && err.length > 0) { + if (err) { console.log('预加载本地资源bmp 出现错误! err=' + err) } else { console.log('预加载本地资源bmp成功! imageKnifedata=' + JSON.stringify(data)) @@ -422,7 +422,7 @@ struct TestPreloadPage { request.load('https://img-blog.csdn.net/20140514114029140') .setImageViewSize({ width: 300, height: 300 }) .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { - if (err && err.length > 0) { + if (err) { console.log('预加载网络资源bmp 出现错误! err=' + err) } else { console.log('预加载网络资源bmp成功! imageKnifedata=' + JSON.stringify(data)) @@ -461,7 +461,7 @@ struct TestPreloadPage { request.load($r('app.media.pngSample')) .setImageViewSize({ width: 300, height: 300 }) .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { - if (err && err.length > 0) { + if (err) { console.log('预加载本地资源png 出现错误! err=' + err) } else { console.log('预加载本地资源png成功! imageKnifedata=' + JSON.stringify(data)) @@ -500,7 +500,7 @@ struct TestPreloadPage { request.load('https://img-blog.csdnimg.cn/20191215043500229.png') .setImageViewSize({ width: 300, height: 300 }) .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { - if (err && err.length > 0) { + if (err) { console.log('预加载网络资源bmp 出现错误! err=' + err) } else { console.log('预加载网络资源bmp成功! imageKnifedata=' + JSON.stringify(data)) @@ -539,7 +539,7 @@ struct TestPreloadPage { request.load($r('app.media.jpgSample')) .setImageViewSize({ width: 300, height: 300 }) .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { - if (err && err.length > 0) { + if (err) { console.log('预加载本地资源jpg 出现错误! err=' + err) } else { console.log('预加载本地资源jpg成功! imageKnifedata=' + JSON.stringify(data)) @@ -578,7 +578,7 @@ struct TestPreloadPage { request.load('https://hbimg.huabanimg.com/cc6af25f8d782d3cf3122bef4e61571378271145735e9-vEVggB') .setImageViewSize({ width: 300, height: 300 }) .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { - if (err && err.length > 0) { + if (err) { console.log('预加载网络资源jpg 出现错误! err=' + err) } else { console.log('预加载网络资源jpg成功! imageknifedata=' + JSON.stringify(data)) diff --git a/imageknife/src/main/ets/components/imageknife/ImageKnife.ets b/imageknife/src/main/ets/components/imageknife/ImageKnife.ets index 4bd8554..ea18f4e 100644 --- a/imageknife/src/main/ets/components/imageknife/ImageKnife.ets +++ b/imageknife/src/main/ets/components/imageknife/ImageKnife.ets @@ -36,6 +36,7 @@ import {CompressBuilder} from "../imageknife/compress/CompressBuilder" import { IDrawLifeCycle } from '../imageknife/interface/IDrawLifeCycle' import {LogUtil} from '../imageknife/utils/LogUtil' import worker from '@ohos.worker' +import common from '@ohos.app.ability.common' export class ImageKnife { static readonly SEPARATOR: string = '/' @@ -55,7 +56,7 @@ export class ImageKnife { private defaultListener: AsyncCallback = { - callback:(err: string, data: ImageKnifeData)=>{return false}; + callback:(err: string, data: ImageKnifeData)=>{return false} }; // 全局监听器 // gifWorker @@ -81,7 +82,7 @@ export class ImageKnife { this.resourceFetch = new ParseResClient(); // 初始化本地 文件保存 - this.filesPath = (ImageKnifeGlobal.getInstance().getHapContext() as Record).filesDir as string; + this.filesPath = (ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).filesDir as string; this.runningRequest = new Array(); this.pendingRequest = new Array(); @@ -96,7 +97,7 @@ export class ImageKnife { return this.memoryCache; } - public static with(context:Record): ImageKnifeGlobal{ + public static with(context:Object): ImageKnifeGlobal{ // 存入hapContext; let global:ImageKnifeGlobal = ImageKnifeGlobal.getInstance(); global.setHapContext(context) diff --git a/imageknife/src/main/ets/components/imageknife/ImageKnifeGlobal.ets b/imageknife/src/main/ets/components/imageknife/ImageKnifeGlobal.ets index 93f2924..d33c890 100644 --- a/imageknife/src/main/ets/components/imageknife/ImageKnifeGlobal.ets +++ b/imageknife/src/main/ets/components/imageknife/ImageKnifeGlobal.ets @@ -67,7 +67,7 @@ export class ImageKnifeGlobal { } } - setHapContext(hapContext:Record):void{ + setHapContext(hapContext:Object):void{ this._objects.set(GlobalEnum.HAP_CONTEXT_KEY, hapContext); } diff --git a/imageknife/src/main/ets/components/imageknife/compress/CompressBuilder.ets b/imageknife/src/main/ets/components/imageknife/compress/CompressBuilder.ets index 7c29b89..f2f1177 100644 --- a/imageknife/src/main/ets/components/imageknife/compress/CompressBuilder.ets +++ b/imageknife/src/main/ets/components/imageknife/compress/CompressBuilder.ets @@ -23,6 +23,7 @@ import {RecourseProvider} from '../compress/provider/RecourseProvider' import { Engine } from '../compress/Engine' import { ImageKnife } from '../ImageKnife' import { ImageKnifeGlobal } from '../ImageKnifeGlobal'; +import common from '@ohos.app.ability.common'; export class CompressBuilder { private _mTargetDir: string = ''; @@ -30,7 +31,7 @@ export class CompressBuilder { private _mRenameListener: OnRenameListener = {reName:()=>{return ''}}; private _mCompressListener: OnCompressListener={ start:()=> {}, - onScuccess:(p: PixelMap|null|undefined, path: string)=> {}, + onSuccess:(p: PixelMap|null|undefined, path: string)=> {}, onError:(s: string)=> {} }; private _mCompressionPredicate: CompressionPredicate ={ @@ -113,7 +114,7 @@ export class CompressBuilder { public async get():Promise { if (!this._mTargetDir) { - let context:Record = (ImageKnifeGlobal.getInstance().getHapContext() as Record); + let context= (ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext); let path = context.filesDir; let timestamp = (new Date()).valueOf(); this._outFilePath = path + "/compress/" + timestamp + (Math.random() * 100).toFixed(0) + ".jpg"; @@ -131,7 +132,7 @@ export class CompressBuilder { let compressListener: OnCompressListener = { start:()=>{ }, - onScuccess:(p: PixelMap|undefined|null, path: string)=> { + onSuccess:(p: PixelMap|undefined|null, path: string)=> { resolve(path); }, onError:(s: string)=> { @@ -201,14 +202,14 @@ export class CompressBuilder { this._mCompressListener, this._mCompressionPredicate).compress(); } else { if (this._mCompressListener) { - this._mCompressListener.onScuccess(null, element.getRecoursePath()); + this._mCompressListener.onSuccess(null, element.getRecoursePath()); } } } } private getImageCacheFile() { - let context:Record = (ImageKnifeGlobal.getInstance().getHapContext() as Record) + let context = (ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext) let timestamp = (new Date()).valueOf(); this._outFilePath = context.filesDir + "/compress/" + timestamp + (Math.random() * 100).toFixed(0) + ".jpg"; this.startCompress(); diff --git a/imageknife/src/main/ets/components/imageknife/compress/Engine.ets b/imageknife/src/main/ets/components/imageknife/compress/Engine.ets index 9a4747e..2a70970 100644 --- a/imageknife/src/main/ets/components/imageknife/compress/Engine.ets +++ b/imageknife/src/main/ets/components/imageknife/compress/Engine.ets @@ -171,7 +171,7 @@ export class Engine { imageRes.createPixelMap(a) .then(bitmap => { if (this.mCompressListener) { - this.mCompressListener.onScuccess(bitmap, path); + this.mCompressListener.onSuccess(bitmap, path); } }) .catch((error:BusinessError) => { diff --git a/imageknife/src/main/ets/components/imageknife/compress/listener/OnCompressListener.ets b/imageknife/src/main/ets/components/imageknife/compress/listener/OnCompressListener.ets index ddb34a1..96a9a76 100644 --- a/imageknife/src/main/ets/components/imageknife/compress/listener/OnCompressListener.ets +++ b/imageknife/src/main/ets/components/imageknife/compress/listener/OnCompressListener.ets @@ -23,7 +23,7 @@ export interface OnCompressListener { /** * compress success */ - onScuccess:(p: PixelMap|undefined|null, path: string)=>void; + onSuccess:(p: PixelMap|undefined|null, path: string)=>void; /** * compress fail */ diff --git a/imageknife/src/main/ets/components/imageknife/networkmanage/DownloadClient.ets b/imageknife/src/main/ets/components/imageknife/networkmanage/DownloadClient.ets index 2ddf334..820073b 100644 --- a/imageknife/src/main/ets/components/imageknife/networkmanage/DownloadClient.ets +++ b/imageknife/src/main/ets/components/imageknife/networkmanage/DownloadClient.ets @@ -20,6 +20,7 @@ import { LoadLocalFileClient } from './LoadLocalFileClient' import { LoadDataShareFileClient } from './LoadDataShareFileClient' import loadRequest from '@ohos.request'; import { ImageKnifeGlobal } from '../ImageKnifeGlobal' +import common from '@ohos.app.ability.common' // 数据加载器 export class DownloadClient implements IDataFetch { @@ -29,8 +30,8 @@ export class DownloadClient implements IDataFetch { loadData(request: RequestOption, onCompleteFunction:(img: ArrayBuffer) => void, onErrorFunction: (err: string) => void) { if (typeof request.loadSrc == 'string') { - let fileDir:string = (ImageKnifeGlobal.getInstance().getHapContext() as Record).filesDir as string; - let cacheDir:string = (ImageKnifeGlobal.getInstance().getHapContext() as Record).cacheDir as string + let fileDir:string = (ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).filesDir as string; + let cacheDir:string = (ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).cacheDir as string if (request.loadSrc.startsWith(fileDir) || request.loadSrc.startsWith(cacheDir)) { diff --git a/imageknife/src/main/ets/components/imageknife/resourcemanage/ParseResClient.ets b/imageknife/src/main/ets/components/imageknife/resourcemanage/ParseResClient.ets index 21fd348..fd27e74 100644 --- a/imageknife/src/main/ets/components/imageknife/resourcemanage/ParseResClient.ets +++ b/imageknife/src/main/ets/components/imageknife/resourcemanage/ParseResClient.ets @@ -18,12 +18,13 @@ import {ResourceTypeEts} from '../../imageknife/constants/ResourceTypeEts' import resourceManager from '@ohos.resourceManager'; import { ImageKnifeGlobal } from '../ImageKnifeGlobal'; import { BusinessError } from '@ohos.base' +import common from '@ohos.app.ability.common'; export class ParseResClient implements IResourceFetch { loadResource(res: Resource, onCompleteFunction:(value:ArrayBuffer)=>void | PromiseLike, onErrorFunction:(reason?:BusinessError|string)=>void) { let resId = res.id; let resType = res.type; if (resType == ResourceTypeEts.MEDIA) { - ((ImageKnifeGlobal.getInstance().getHapContext() as Record).resourceManager as resourceManager.ResourceManager) + ((ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).resourceManager as resourceManager.ResourceManager) .getMediaContent(resId) .then(data => { let arrayBuffer = this.typedArrayToBuffer(data); diff --git a/imageknife/src/main/ets/components/imageknife/transform/MaskTransformation.ets b/imageknife/src/main/ets/components/imageknife/transform/MaskTransformation.ets index 40328f0..4c04a40 100644 --- a/imageknife/src/main/ets/components/imageknife/transform/MaskTransformation.ets +++ b/imageknife/src/main/ets/components/imageknife/transform/MaskTransformation.ets @@ -25,6 +25,7 @@ import { ImageKnifeGlobal } from '../ImageKnifeGlobal' import resourceManager from '@ohos.resourceManager' import { BusinessError } from '@ohos.base' import {Size} from '../../imageknife/RequestOption' +import common from '@ohos.app.ability.common' export class MaskTransformation implements BaseTransform { private _mResourceData:Resource|undefined = undefined; @@ -90,7 +91,7 @@ export class MaskTransformation implements BaseTransform { func.asyncTransform("MaskTransformation resource is empty", null) } } - let context = (ImageKnifeGlobal.getInstance().getHapContext() as Record) + let context = (ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext) if(context != undefined){ let resourceManager = context.resourceManager as resourceManager.ResourceManager if(resourceManager != undefined && this._mResourceData != undefined) diff --git a/imageknife/src/main/ets/components/imageknife/utils/ColorUtils.ets b/imageknife/src/main/ets/components/imageknife/utils/ColorUtils.ets index d7fc36e..ea62c11 100644 --- a/imageknife/src/main/ets/components/imageknife/utils/ColorUtils.ets +++ b/imageknife/src/main/ets/components/imageknife/utils/ColorUtils.ets @@ -13,6 +13,7 @@ * limitations under the License. */ import resourceManager from '@ohos.resourceManager'; +import common from '@ohos.app.ability.common'; import { ImageKnifeGlobal } from '../ImageKnifeGlobal'; import {DataCallBack} from "../interface/DataCallBack" @@ -25,7 +26,7 @@ export namespace ColorUtils { export function parseColor(c: string, callback: DataCallBack) { let reColor = 'sys.color.' + c; - ((ImageKnifeGlobal.getInstance().getHapContext() as Record).resourceManager as resourceManager.ResourceManager).getString($r(reColor) + ((ImageKnifeGlobal.getInstance().getHapContext() as common.UIAbilityContext).resourceManager as resourceManager.ResourceManager).getString($r(reColor) .id, (err, color) => { if (!err) { let cos = JSON.stringify(color); diff --git a/imageknife/src/main/ets/components/imageknife/utils/FastBlur.ets b/imageknife/src/main/ets/components/imageknife/utils/FastBlur.ets index d85e8bb..1d86b37 100644 --- a/imageknife/src/main/ets/components/imageknife/utils/FastBlur.ets +++ b/imageknife/src/main/ets/components/imageknife/utils/FastBlur.ets @@ -306,7 +306,7 @@ export namespace fastBlur { } await bitmap.writeBufferToPixels(bufferNewData); if (func != undefined) { - func?s.asyncTransform("success", bitmap); + func?.asyncTransform("success", bitmap); } } export async function blurGPU(bitmap: PixelMap, radius: number, canReuseInBitmap: boolean, func?: AsyncTransform) { diff --git a/imageknife/src/main/ets/components/imageknife/utils/gif/GIFParseImpl.ets b/imageknife/src/main/ets/components/imageknife/utils/gif/GIFParseImpl.ets index 2160a45..9cd5390 100644 --- a/imageknife/src/main/ets/components/imageknife/utils/gif/GIFParseImpl.ets +++ b/imageknife/src/main/ets/components/imageknife/utils/gif/GIFParseImpl.ets @@ -113,11 +113,11 @@ export class GIFParseImpl implements IParseGif { private useWorkerParse(worker:worker.ThreadWorker, buffer: ArrayBuffer, callback: (data?:GIFFrame[], err?:BusinessError|string) => void) { worker.onerror = (err:ErrorEvent)=>{ - callback(undefined, err) + callback(undefined, err.message) } worker.onmessageerror = (event: MessageEvents) => { - callback(undefined, event) + callback(undefined, event.type) } worker.onexit = ()=> {