新增磁盘预加载返回文件路径接口prefetchToDiskCache

Signed-off-by: zenggaofeng <zenggaofeng2@h-partners.com>
This commit is contained in:
zenggaofeng 2024-03-29 10:33:03 +08:00
parent acc5ac5c72
commit 85452cdb25
9 changed files with 349 additions and 259 deletions

View File

@ -1,3 +1,6 @@
## 2.1.2-rc.12
- 新增磁盘预加载返回文件路径接口prefetchToDiskCache
## 2.1.2-rc.11 ## 2.1.2-rc.11
- 修复设置磁盘容量最大值出现闪退 - 修复设置磁盘容量最大值出现闪退
- 修复概率出现jscrash问题 - 修复概率出现jscrash问题

View File

@ -4,7 +4,7 @@
"name": "entry", "name": "entry",
"description": "example description", "description": "example description",
"repository": {}, "repository": {},
"version": "2.1.2-rc.11", "version": "2.1.2-rc.12",
"dependencies": { "dependencies": {
"@ohos/libraryimageknife": "file:../sharedlibrary", "@ohos/libraryimageknife": "file:../sharedlibrary",
"@ohos/sharedlibrary2": "file:../sharedlibrary2", "@ohos/sharedlibrary2": "file:../sharedlibrary2",

View File

@ -124,12 +124,6 @@ struct IndexFunctionDemo {
console.log("测试一级内存缓存") console.log("测试一级内存缓存")
router.pushUrl({ url: "pages/testReusePhotoPage" }); router.pushUrl({ url: "pages/testReusePhotoPage" });
}).margin({ top: 5, left: 3 }) }).margin({ top: 5, left: 3 })
Button("测试所有缓存信息输出")
.onClick(() => {
console.log("pages/testAllCacheInfoPage 页面跳转")
router.pushUrl({ url: "pages/testAllCacheInfoPage" });
}).margin({ top: 5, left: 3 })
}.width('100%') }.width('100%')
.height(60).backgroundColor(Color.Pink) .height(60).backgroundColor(Color.Pink)
Text("测试占位图 失败占位图 功能点").fontSize(15) Text("测试占位图 失败占位图 功能点").fontSize(15)
@ -148,6 +142,11 @@ struct IndexFunctionDemo {
console.log("测试预加载") console.log("测试预加载")
router.pushUrl({ url: "pages/testPreloadPage" }); router.pushUrl({ url: "pages/testPreloadPage" });
}).margin({ top: 5, left: 3 }) }).margin({ top: 5, left: 3 })
Button("测试磁盘预加载返回string")
.onClick(() => {
console.log("测试预加载测试磁盘预加载返回string")
router.pushUrl({ url: "pages/testDiskPreLoadPage" });
}).margin({ top: 5, left: 3 })
}.width('100%').height(60).backgroundColor(Color.Pink) }.width('100%').height(60).backgroundColor(Color.Pink)

View File

@ -0,0 +1,61 @@
/*
* Copyright (C) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { ImageKnife,ImageKnifeGlobal,ImageKnifeOption,ImageKnifeComponent} from '@ohos/libraryimageknife'
@Entry
@Component
struct DiskPreLoadPage {
@State imageKnifeOption2: ImageKnifeOption =
{
loadSrc: $r('app.media.icon'),
placeholderSrc: $r('app.media.icon_loading'),
errorholderSrc: $r('app.media.icon_failed'),
};
build() {
Row() {
Column() {
Button("预加载图片").onClick(()=>{
let imageKnife: ImageKnife | undefined = ImageKnifeGlobal.getInstance().getImageKnife();
if(imageKnife != undefined){
imageKnife.prefetchToDiskCache("https://gd-hbimg.huaban.com/e0a25a7cab0d7c2431978726971d61720732728a315ae-57EskW_fw658")
.then((resolve)=>{
console.log("成功回调 " + resolve)
})
.catch((reject: ESObject) => {
console.log("失败回调 " + reject)
})
}
})
Flex({ direction: FlexDirection.Row, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
Button("加载GIF")
.onClick(() => {
this.imageKnifeOption2 = {
loadSrc: 'https://gd-hbimg.huaban.com/e0a25a7cab0d7c2431978726971d61720732728a315ae-57EskW_fw658',
placeholderSrc: $r('app.media.icon_loading'),
errorholderSrc: $r('app.media.icon_failed'),
displayProgress:true,
}
}).margin({ top: 5, left: 3 })
ImageKnifeComponent({ imageKnifeOption: this.imageKnifeOption2 }).width(300).height(300)
}.width('100%').backgroundColor(Color.Pink)
}
.width('100%')
}
.height('100%')
}
}

View File

@ -88,59 +88,59 @@ struct TestPreloadPage {
if (err) { if (err) {
console.log('预加载本地资源gif 出现错误! err=' + err) console.log('预加载本地资源gif 出现错误! err=' + err)
} else { } else {
console.log('预加载本地资源gif成功! imageKnifedata=' + JSON.stringify(data)) console.log('预加载本地资源gif成功! imageKnifedata=' + JSON.stringify(data))
} }
return false; return false;
}}) }})
ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request);
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
Button('本地资源gif') Button('本地资源gif')
.onClick(() => { .onClick(() => {
this.imageKnifeOption1 = { this.imageKnifeOption1 = {
loadSrc: $r('app.media.gifSample'), loadSrc: $r('app.media.gifSample'),
placeholderSrc: $r('app.media.icon_loading'), placeholderSrc: $r('app.media.icon_loading'),
errorholderSrc: $r('app.media.icon_failed'), errorholderSrc: $r('app.media.icon_failed'),
} }
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
Button('预加载本地资源gif静态') Button('预加载本地资源gif静态')
.onClick(() => { .onClick(() => {
let request = new RequestOption(); let request = new RequestOption();
request.load($r('app.media.gifSample')) request.load($r('app.media.gifSample'))
.setImageViewSize({ width: 300, height: 300 }) .setImageViewSize({ width: 300, height: 300 })
.dontAnimate() .dontAnimate()
.addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => {
if (err ) { if (err ) {
console.log('预加载本地资源gif静态 出现错误! err=' + err) console.log('预加载本地资源gif静态 出现错误! err=' + err)
} else { } else {
console.log('预加载本地资源gif静态成功! imageKnifedata=' + JSON.stringify(data)) console.log('预加载本地资源gif静态成功! imageKnifedata=' + JSON.stringify(data))
} }
return false; return false;
}}) }})
ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request);
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
Button('本地资源gif静态') Button('本地资源gif静态')
.onClick(() => { .onClick(() => {
this.imageKnifeOption1 = { this.imageKnifeOption1 = {
loadSrc: $r('app.media.gifSample'), loadSrc: $r('app.media.gifSample'),
placeholderSrc: $r('app.media.icon_loading'), placeholderSrc: $r('app.media.icon_loading'),
errorholderSrc: $r('app.media.icon_failed'), errorholderSrc: $r('app.media.icon_failed'),
dontAnimateFlag: true dontAnimateFlag: true
} }
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
} }
@ -150,64 +150,64 @@ struct TestPreloadPage {
Button('预加载网络资源gif') Button('预加载网络资源gif')
.onClick(() => { .onClick(() => {
let request = new RequestOption(); let request = new RequestOption();
request.load('https://gd-hbimg.huaban.com/e0a25a7cab0d7c2431978726971d61720732728a315ae-57EskW_fw658') request.load('https://gd-hbimg.huaban.com/e0a25a7cab0d7c2431978726971d61720732728a315ae-57EskW_fw658')
.setImageViewSize({ width: 300, height: 300 }) .setImageViewSize({ width: 300, height: 300 })
.addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => {
if (err) { if (err) {
console.log('预加载网络资源gif 出现错误! err=' + err) console.log('预加载网络资源gif 出现错误! err=' + err)
} else { } else {
console.log('预加载网络资源gif成功! imageKnifedata=' + JSON.stringify(data)) console.log('预加载网络资源gif成功! imageKnifedata=' + JSON.stringify(data))
} }
return false; return false;
}}) }})
ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request);
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
Button('网络资源gif') Button('网络资源gif')
.onClick(() => { .onClick(() => {
this.imageKnifeOption1 = { this.imageKnifeOption1 = {
loadSrc: 'https://gd-hbimg.huaban.com/e0a25a7cab0d7c2431978726971d61720732728a315ae-57EskW_fw658', loadSrc: 'https://gd-hbimg.huaban.com/e0a25a7cab0d7c2431978726971d61720732728a315ae-57EskW_fw658',
placeholderSrc: $r('app.media.icon_loading'), placeholderSrc: $r('app.media.icon_loading'),
errorholderSrc: $r('app.media.icon_failed'), errorholderSrc: $r('app.media.icon_failed'),
}; };
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
Button('预加载网络资源gif静态') Button('预加载网络资源gif静态')
.onClick(() => { .onClick(() => {
let request = new RequestOption(); let request = new RequestOption();
request.load('https://gd-hbimg.huaban.com/e0a25a7cab0d7c2431978726971d61720732728a315ae-57EskW_fw658') request.load('https://gd-hbimg.huaban.com/e0a25a7cab0d7c2431978726971d61720732728a315ae-57EskW_fw658')
.setImageViewSize({ width: 300, height: 300 }) .setImageViewSize({ width: 300, height: 300 })
.dontAnimate() .dontAnimate()
.addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => {
if (err) { if (err) {
console.log('预加载网络资源gif静态 出现错误! err=' + err) console.log('预加载网络资源gif静态 出现错误! err=' + err)
} else { } else {
console.log('预加载网络资源gif静态成功! imageKnifedata=' + JSON.stringify(data)) console.log('预加载网络资源gif静态成功! imageKnifedata=' + JSON.stringify(data))
} }
return false; return false;
}}) }})
ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request);
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
Button('网络资源gif静态') Button('网络资源gif静态')
.onClick(() => { .onClick(() => {
this.imageKnifeOption1 = { this.imageKnifeOption1 = {
loadSrc: 'https://gd-hbimg.huaban.com/e0a25a7cab0d7c2431978726971d61720732728a315ae-57EskW_fw658', loadSrc: 'https://gd-hbimg.huaban.com/e0a25a7cab0d7c2431978726971d61720732728a315ae-57EskW_fw658',
placeholderSrc: $r('app.media.icon_loading'), placeholderSrc: $r('app.media.icon_loading'),
errorholderSrc: $r('app.media.icon_failed'), errorholderSrc: $r('app.media.icon_failed'),
dontAnimateFlag: true dontAnimateFlag: true
}; };
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
} }
@ -228,27 +228,27 @@ struct TestPreloadPage {
if (err ) { if (err ) {
console.log('预加载本地资源svg 出现错误! err=' + err) console.log('预加载本地资源svg 出现错误! err=' + err)
} else { } else {
console.log('预加载本地资源svg成功! imageKnifedata=' + JSON.stringify(data)) console.log('预加载本地资源svg成功! imageKnifedata=' + JSON.stringify(data))
} }
return false; return false;
}}) }})
ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request);
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
Button('本地资源svg') Button('本地资源svg')
.onClick(() => { .onClick(() => {
this.imageKnifeOption = { this.imageKnifeOption = {
loadSrc: $r('app.media.svgSample'), loadSrc: $r('app.media.svgSample'),
placeholderSrc: $r('app.media.icon_loading'), placeholderSrc: $r('app.media.icon_loading'),
errorholderSrc: $r('app.media.icon_failed'), errorholderSrc: $r('app.media.icon_failed'),
} }
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
@ -275,32 +275,32 @@ struct TestPreloadPage {
Button('预加载网络资源svg') Button('预加载网络资源svg')
.onClick(() => { .onClick(() => {
let request = new RequestOption(); let request = new RequestOption();
request.load(this.svgUrl) request.load(this.svgUrl)
.setImageViewSize({ width: 300, height: 300 }) .setImageViewSize({ width: 300, height: 300 })
.addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => {
if (err) { if (err) {
console.log('预加载网络资源gif 出现错误! err=' + err) console.log('预加载网络资源gif 出现错误! err=' + err)
} else { } else {
console.log('预加载网络资源gif成功! imageKnifedata=' + JSON.stringify(data)) console.log('预加载网络资源gif成功! imageKnifedata=' + JSON.stringify(data))
} }
return false; return false;
}}) }})
ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request);
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
Button('网络资源svg') Button('网络资源svg')
.onClick(() => { .onClick(() => {
this.imageKnifeOption = { this.imageKnifeOption = {
loadSrc: this.svgUrl, loadSrc: this.svgUrl,
placeholderSrc: $r('app.media.icon_loading'), placeholderSrc: $r('app.media.icon_loading'),
errorholderSrc: $r('app.media.icon_failed'), errorholderSrc: $r('app.media.icon_failed'),
}; };
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
@ -323,27 +323,27 @@ struct TestPreloadPage {
if (err) { if (err) {
console.log('预加载本地资源webp 出现错误! err=' + err) console.log('预加载本地资源webp 出现错误! err=' + err)
} else { } else {
console.log('预加载本地资源webp成功! imageKnifedata=' + JSON.stringify(data)) console.log('预加载本地资源webp成功! imageKnifedata=' + JSON.stringify(data))
} }
return false; return false;
}}) }})
ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request);
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
Button('本地资源webp') Button('本地资源webp')
.onClick(() => { .onClick(() => {
this.imageKnifeOption3 = { this.imageKnifeOption3 = {
loadSrc: $r('app.media.jpgSample'), loadSrc: $r('app.media.jpgSample'),
placeholderSrc: $r('app.media.icon_loading'), placeholderSrc: $r('app.media.icon_loading'),
errorholderSrc: $r('app.media.icon_failed'), errorholderSrc: $r('app.media.icon_failed'),
} }
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
@ -355,32 +355,32 @@ struct TestPreloadPage {
Button('预加载网络资源webp') Button('预加载网络资源webp')
.onClick(() => { .onClick(() => {
let request = new RequestOption(); let request = new RequestOption();
request.load('https://hbimg.huabanimg.com/95a6d37a39aa0b70d48fa18dc7df8309e2e0e8e85571e-x4hhks_fw658/format/webp') request.load('https://hbimg.huabanimg.com/95a6d37a39aa0b70d48fa18dc7df8309e2e0e8e85571e-x4hhks_fw658/format/webp')
.setImageViewSize({ width: 300, height: 300 }) .setImageViewSize({ width: 300, height: 300 })
.addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => {
if (err) { if (err) {
console.log('预加载网络资源webp 出现错误! err=' + err) console.log('预加载网络资源webp 出现错误! err=' + err)
} else { } else {
console.log('预加载网络资源webp成功! imageKnifedata=' + JSON.stringify(data)) console.log('预加载网络资源webp成功! imageKnifedata=' + JSON.stringify(data))
} }
return false; return false;
}}) }})
ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request);
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
Button('网络资源webp') Button('网络资源webp')
.onClick(() => { .onClick(() => {
this.imageKnifeOption3 = { this.imageKnifeOption3 = {
loadSrc: 'https://hbimg.huabanimg.com/95a6d37a39aa0b70d48fa18dc7df8309e2e0e8e85571e-x4hhks_fw658/format/webp', loadSrc: 'https://hbimg.huabanimg.com/95a6d37a39aa0b70d48fa18dc7df8309e2e0e8e85571e-x4hhks_fw658/format/webp',
placeholderSrc: $r('app.media.icon_loading'), placeholderSrc: $r('app.media.icon_loading'),
errorholderSrc: $r('app.media.icon_failed'), errorholderSrc: $r('app.media.icon_failed'),
}; };
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
} }
@ -401,27 +401,27 @@ struct TestPreloadPage {
if (err) { if (err) {
console.log('预加载本地资源bmp 出现错误! err=' + err) console.log('预加载本地资源bmp 出现错误! err=' + err)
} else { } else {
console.log('预加载本地资源bmp成功! imageKnifedata=' + JSON.stringify(data)) console.log('预加载本地资源bmp成功! imageKnifedata=' + JSON.stringify(data))
} }
return false; return false;
}}) }})
ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request);
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
Button('本地资源bmp') Button('本地资源bmp')
.onClick(() => { .onClick(() => {
this.imageKnifeOption4 = { this.imageKnifeOption4 = {
loadSrc: $r('app.media.bmpSample'), loadSrc: $r('app.media.bmpSample'),
placeholderSrc: $r('app.media.icon_loading'), placeholderSrc: $r('app.media.icon_loading'),
errorholderSrc: $r('app.media.icon_failed'), errorholderSrc: $r('app.media.icon_failed'),
} }
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
@ -433,32 +433,32 @@ struct TestPreloadPage {
Button('预加载网络资源bmp') Button('预加载网络资源bmp')
.onClick(() => { .onClick(() => {
let request = new RequestOption(); let request = new RequestOption();
request.load('https://img-blog.csdn.net/20140514114029140') request.load('https://img-blog.csdn.net/20140514114029140')
.setImageViewSize({ width: 300, height: 300 }) .setImageViewSize({ width: 300, height: 300 })
.addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => {
if (err) { if (err) {
console.log('预加载网络资源bmp 出现错误! err=' + err) console.log('预加载网络资源bmp 出现错误! err=' + err)
} else { } else {
console.log('预加载网络资源bmp成功! imageKnifedata=' + JSON.stringify(data)) console.log('预加载网络资源bmp成功! imageKnifedata=' + JSON.stringify(data))
} }
return false; return false;
}}) }})
ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request);
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
Button('网络资源bmp') Button('网络资源bmp')
.onClick(() => { .onClick(() => {
this.imageKnifeOption4 = { this.imageKnifeOption4 = {
loadSrc: 'https://img-blog.csdn.net/20140514114029140', loadSrc: 'https://img-blog.csdn.net/20140514114029140',
placeholderSrc: $r('app.media.icon_loading'), placeholderSrc: $r('app.media.icon_loading'),
errorholderSrc: $r('app.media.icon_failed'), errorholderSrc: $r('app.media.icon_failed'),
}; };
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
} }
@ -479,27 +479,27 @@ struct TestPreloadPage {
if (err) { if (err) {
console.log('预加载本地资源png 出现错误! err=' + err) console.log('预加载本地资源png 出现错误! err=' + err)
} else { } else {
console.log('预加载本地资源png成功! imageKnifedata=' + JSON.stringify(data)) console.log('预加载本地资源png成功! imageKnifedata=' + JSON.stringify(data))
} }
return false; return false;
}}) }})
ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request);
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
Button('本地资源png') Button('本地资源png')
.onClick(() => { .onClick(() => {
this.imageKnifeOption5 = { this.imageKnifeOption5 = {
loadSrc: $r('app.media.pngSample'), loadSrc: $r('app.media.pngSample'),
placeholderSrc: $r('app.media.icon_loading'), placeholderSrc: $r('app.media.icon_loading'),
errorholderSrc: $r('app.media.icon_failed'), errorholderSrc: $r('app.media.icon_failed'),
} }
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
@ -511,32 +511,32 @@ struct TestPreloadPage {
Button('预加载网络资源png') Button('预加载网络资源png')
.onClick(() => { .onClick(() => {
let request = new RequestOption(); let request = new RequestOption();
request.load('https://img-blog.csdnimg.cn/20191215043500229.png') request.load('https://img-blog.csdnimg.cn/20191215043500229.png')
.setImageViewSize({ width: 300, height: 300 }) .setImageViewSize({ width: 300, height: 300 })
.addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => {
if (err) { if (err) {
console.log('预加载网络资源bmp 出现错误! err=' + err) console.log('预加载网络资源bmp 出现错误! err=' + err)
} else { } else {
console.log('预加载网络资源bmp成功! imageKnifedata=' + JSON.stringify(data)) console.log('预加载网络资源bmp成功! imageKnifedata=' + JSON.stringify(data))
} }
return false; return false;
}}) }})
ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request);
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
Button('网络资源png') Button('网络资源png')
.onClick(() => { .onClick(() => {
this.imageKnifeOption5 = { this.imageKnifeOption5 = {
loadSrc: 'https://img-blog.csdnimg.cn/20191215043500229.png', loadSrc: 'https://img-blog.csdnimg.cn/20191215043500229.png',
placeholderSrc: $r('app.media.icon_loading'), placeholderSrc: $r('app.media.icon_loading'),
errorholderSrc: $r('app.media.icon_failed'), errorholderSrc: $r('app.media.icon_failed'),
}; };
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
} }
@ -557,27 +557,27 @@ struct TestPreloadPage {
if (err) { if (err) {
console.log('预加载本地资源jpg 出现错误! err=' + err) console.log('预加载本地资源jpg 出现错误! err=' + err)
} else { } else {
console.log('预加载本地资源jpg成功! imageKnifedata=' + JSON.stringify(data)) console.log('预加载本地资源jpg成功! imageKnifedata=' + JSON.stringify(data))
} }
return false; return false;
}}) }})
ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request);
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
Button('本地资源jpg') Button('本地资源jpg')
.onClick(() => { .onClick(() => {
this.imageKnifeOption6 = { this.imageKnifeOption6 = {
loadSrc: $r('app.media.jpgSample'), loadSrc: $r('app.media.jpgSample'),
placeholderSrc: $r('app.media.icon_loading'), placeholderSrc: $r('app.media.icon_loading'),
errorholderSrc: $r('app.media.icon_failed'), errorholderSrc: $r('app.media.icon_failed'),
} }
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
@ -589,32 +589,32 @@ struct TestPreloadPage {
Button('预加载网络资源jpg') Button('预加载网络资源jpg')
.onClick(() => { .onClick(() => {
let request = new RequestOption(); let request = new RequestOption();
request.load('https://hbimg.huabanimg.com/cc6af25f8d782d3cf3122bef4e61571378271145735e9-vEVggB') request.load('https://hbimg.huabanimg.com/cc6af25f8d782d3cf3122bef4e61571378271145735e9-vEVggB')
.setImageViewSize({ width: 300, height: 300 }) .setImageViewSize({ width: 300, height: 300 })
.addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => {
if (err) { if (err) {
console.log('预加载网络资源jpg 出现错误! err=' + err) console.log('预加载网络资源jpg 出现错误! err=' + err)
} else { } else {
console.log('预加载网络资源jpg成功! imageknifedata=' + JSON.stringify(data)) console.log('预加载网络资源jpg成功! imageknifedata=' + JSON.stringify(data))
} }
return false; return false;
}}) }})
ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request); ImageKnifeGlobal.getInstance().getImageKnife()?.preload(request);
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
Button('网络资源jpg') Button('网络资源jpg')
.onClick(() => { .onClick(() => {
this.imageKnifeOption6 = { this.imageKnifeOption6 = {
loadSrc: 'https://hbimg.huabanimg.com/cc6af25f8d782d3cf3122bef4e61571378271145735e9-vEVggB', loadSrc: 'https://hbimg.huabanimg.com/cc6af25f8d782d3cf3122bef4e61571378271145735e9-vEVggB',
placeholderSrc: $r('app.media.icon_loading'), placeholderSrc: $r('app.media.icon_loading'),
errorholderSrc: $r('app.media.icon_failed'), errorholderSrc: $r('app.media.icon_failed'),
}; };
}) })
.margin({ left: 15 }) .margin({ left: 15 })
.backgroundColor(Color.Grey) .backgroundColor(Color.Grey)
} }

View File

@ -12,6 +12,7 @@
"pages/showErrorholderTestCasePage", "pages/showErrorholderTestCasePage",
"pages/transformPixelMapPage", "pages/transformPixelMapPage",
"pages/testPreloadPage", "pages/testPreloadPage",
"pages/testDiskPreLoadPage",
"pages/testImageKnifeOptionChangedPage", "pages/testImageKnifeOptionChangedPage",
"pages/testImageKnifeOptionChangedPage2", "pages/testImageKnifeOptionChangedPage2",
"pages/testImageKnifeOptionChangedPage3", "pages/testImageKnifeOptionChangedPage3",

View File

@ -14,7 +14,7 @@
"main": "index.ets", "main": "index.ets",
"repository": "https://gitee.com/openharmony-tpc/ImageKnife", "repository": "https://gitee.com/openharmony-tpc/ImageKnife",
"type": "module", "type": "module",
"version": "2.1.2-rc.11", "version": "2.1.2-rc.12",
"dependencies": { "dependencies": {
"pako": "^2.1.0", "pako": "^2.1.0",
"@ohos/gpu_transform": "^1.0.0" "@ohos/gpu_transform": "^1.0.0"

View File

@ -540,7 +540,7 @@ export class ImageKnife {
displayProgress: displayProgress, displayProgress: displayProgress,
uuid: request.uuid, uuid: request.uuid,
dontAnimateFlag: request.dontAnimateFlag, dontAnimateFlag: request.dontAnimateFlag,
priority:request.priority, priority: request.priority,
generateCacheKey: request.generateCacheKey, generateCacheKey: request.generateCacheKey,
generateResourceKey: request.generateResourceKey, generateResourceKey: request.generateResourceKey,
generateDataKey: request.generateDataKey, generateDataKey: request.generateDataKey,
@ -551,7 +551,7 @@ export class ImageKnife {
gpuEnabled: request.gpuEnabled, gpuEnabled: request.gpuEnabled,
signature: request.signature, signature: request.signature,
isCacheable: request.isCacheable, isCacheable: request.isCacheable,
diskMemoryCachePath:this.diskMemoryCache.getPath() diskMemoryCachePath: this.diskMemoryCache.getPath()
} }
return taskParams; return taskParams;
} }
@ -590,10 +590,10 @@ export class ImageKnife {
retryholderSrc: request.retryholderSrc, retryholderSrc: request.retryholderSrc,
}); });
//使用taskpool多线程执行资源下载 //使用taskpool多线程执行资源下载
let task:ESObject = new taskpool.Task(taskExecute, taskParams, loadSrcJson) let task: ESObject = new taskpool.Task(taskExecute, taskParams, loadSrcJson)
task.setTransferList([]) task.setTransferList([])
emitter.on(Constants.PROGRESS_EMITTER as ESObject, (data:ESObject) => { emitter.on(Constants.PROGRESS_EMITTER as ESObject, (data: ESObject) => {
if (request.progressFunc && data?.data?.value) { if (request.progressFunc && data?.data?.value) {
let percent = data.data.value as number; let percent = data.data.value as number;
request.progressFunc.asyncSuccess(percent); request.progressFunc.asyncSuccess(percent);
@ -704,8 +704,34 @@ export class ImageKnife {
} }
} }
} }
prefetchToDiskCache(url: string): Promise<string> {
return new Promise((resolve, reject) => {
let key = this.engineKeyImpl.generateOriginalDiskCacheKey(url, undefined);
let cachedPath = this.getDiskMemoryCache().getFileToPath(key);
if (cachedPath == null || cachedPath == "" || cachedPath == undefined) {
let request = new RequestOption();
request.load(url)
.addListener({ callback: (err: BusinessError | string, data: ImageKnifeData) => {
if (err) {
reject(err)
} else {
let cachedPath = this.getDiskMemoryCache().getFileToPath(key);
resolve(cachedPath);
}
return false;
}
})
this.call(request);
} else {
resolve(cachedPath);
}
})
}
} }
/** /**
* 加载资源子线程包含流程:网络请求资源->下载资源到本地->解码成ixelMap | GIFFrame[]->缓存到内存和磁盘 * 加载资源子线程包含流程:网络请求资源->下载资源到本地->解码成ixelMap | GIFFrame[]->缓存到内存和磁盘
* @param taskParams:任务参数JSON字符串类型 * @param taskParams:任务参数JSON字符串类型

View File

@ -6,6 +6,6 @@
"name": "imageknife", "name": "imageknife",
"description": "example description", "description": "example description",
"repository": {}, "repository": {},
"version": "2.1.2-rc.11", "version": "2.1.2-rc.12",
"dependencies": {} "dependencies": {}
} }