diff --git a/entry/src/main/ets/pages/Index.ets b/entry/src/main/ets/pages/Index.ets
index 458ef5a..e7b5d4a 100644
--- a/entry/src/main/ets/pages/Index.ets
+++ b/entry/src/main/ets/pages/Index.ets
@@ -17,36 +17,36 @@ import router from '@system.router';
@Entry
@ComponentV2
struct Index {
-
- getResourceString(res:Resource){
+ getResourceString(res: Resource) {
return getContext().resourceManager.getStringSync(res.id)
}
-
aboutToAppear(): void {
}
build() {
- Scroll(){
+ Scroll() {
Column() {
- Button($r('app.string.Test_ImageAnimator')).onClick(()=>{
+ Button($r('app.string.Test_ImageAnimator')).onClick(() => {
router.push({
uri: 'pages/ImageAnimatorPage',
});
})
- Button($r('app.string.Test_multiple_images')).margin({top:10}).onClick(()=>{
+ Button($r('app.string.Test_multiple_images')).margin({ top: 10 }).onClick(() => {
router.push({
uri: 'pages/TestCommonImage',
});
})
- Button(this.getResourceString($r('app.string.Multiple_images')) + " + reuse + LazyForeach").margin({top:10}).onClick(()=>{
- router.push({
- uri: 'pages/UserPage',
+ Button(this.getResourceString($r('app.string.Multiple_images')) + " + reuse + LazyForeach")
+ .margin({ top: 10 })
+ .onClick(() => {
+ router.push({
+ uri: 'pages/UserPage',
- });
- })
- Button($r('app.string.Test_SingleImage')).margin({top:10}).onClick(()=>{
+ });
+ })
+ Button($r('app.string.Test_SingleImage')).margin({ top: 10 }).onClick(() => {
router.push({
uri: 'pages/SingleImage',
@@ -58,89 +58,90 @@ struct Index {
});
})
Button($r('app.string.Display_long_image')).margin({top:10}).onClick(()=>{
+ Button($r('app.string.Display_long_image')).margin({ top: 10 }).onClick(() => {
router.push({
uri: 'pages/LongImagePage',
});
})
- Button($r('app.string.Image_Transformation')).margin({top:10}).onClick(()=>{
+ Button($r('app.string.Image_Transformation')).margin({ top: 10 }).onClick(() => {
router.push({
uri: 'pages/ImageTransformation',
});
})
- Button($r('app.string.Test_media_URL')).margin({top:10}).onClick(()=>{
+ Button($r('app.string.Test_media_URL')).margin({ top: 10 }).onClick(() => {
router.push({
uri: 'pages/dataShareUriLoadPage',
});
})
- Button($r('app.string.Different_ObjectFit')).margin({top:10}).onClick(()=>{
+ Button($r('app.string.Different_ObjectFit')).margin({ top: 10 }).onClick(() => {
router.push({
uri: 'pages/ObjectFitPage',
});
})
- Button($r('app.string.Custom_cache_key')).margin({top:10}).onClick(()=>{
+ Button($r('app.string.Custom_cache_key')).margin({ top: 10 }).onClick(() => {
router.push({
uri: 'pages/SignatureTestPage',
});
})
- Button($r('app.string.Test_image_loading_success_or_failure_events')).margin({top:10}).onClick(()=>{
+ Button($r('app.string.Test_image_loading_success_or_failure_events')).margin({ top: 10 }).onClick(() => {
router.push({
uri: 'pages/LoadStatePage',
})
})
- Button($r('app.string.Image_scaling')).margin({top:10}).onClick(()=>{
+ Button($r('app.string.Image_scaling')).margin({ top: 10 }).onClick(() => {
router.push({
uri: 'pages/TransformPage',
});
})
- Button($r('app.string.Test_HSP')).margin({top:10}).onClick(()=>{
+ Button($r('app.string.Test_HSP')).margin({ top: 10 }).onClick(() => {
router.push({
uri: 'pages/TestHspPreLoadImage',
});
})
- Button($r('app.string.Test_custom_download')).margin({top:10}).onClick(()=>{
+ Button($r('app.string.Test_custom_download')).margin({ top: 10 }).onClick(() => {
router.push({
uri: 'pages/TestSetCustomImagePage',
});
})
- Button(this.getResourceString($r('app.string.Message_list')) + " + List").margin({top:10}).onClick(()=>{
+ Button(this.getResourceString($r('app.string.Message_list')) + " + List").margin({ top: 10 }).onClick(() => {
router.push({
uri: 'pages/TestImageFlash',
});
})
- Button($r('app.string.Preloading_images_to_cache')).margin({top:10}).onClick(()=>{
+ Button($r('app.string.Preloading_images_to_cache')).margin({ top: 10 }).onClick(() => {
router.push({
uri: 'pages/TestPrefetchToFileCache',
});
})
- Button($r('app.string.Retrieve_image_display_from_cache')).margin({top:10}).onClick(()=>{
+ Button($r('app.string.Retrieve_image_display_from_cache')).margin({ top: 10 }).onClick(() => {
router.push({
uri: 'pages/TestIsUrlExist',
});
})
- Button($r('app.string.Test_single_request_header')).margin({top:10}).onClick(()=>{
+ Button($r('app.string.Test_single_request_header')).margin({ top: 10 }).onClick(() => {
router.push({
uri: 'pages/TestHeader',
});
})
- Button($r('app.string.Test_write_cache_strategy')).margin({top:10}).onClick(()=>{
+ Button($r('app.string.Test_write_cache_strategy')).margin({ top: 10 }).onClick(() => {
router.push({
uri: 'pages/TestWriteCacheStage',
@@ -148,24 +149,39 @@ struct Index {
})
- Button($r('app.string.Test_removing_image_cache_interface')).margin({top:10}).onClick(()=>{
+ Button($r('app.string.Test_removing_image_cache_interface')).margin({ top: 10 }).onClick(() => {
router.push({
uri: 'pages/TestRemoveCache',
});
})
- Button($r('app.string.Test_error_image_display')).margin({top:10}).onClick(()=>{
+ Button($r('app.string.Test_error_image_display')).margin({ top: 10 }).onClick(() => {
router.push({
uri: 'pages/TestErrorHolderPage',
});
})
- Button($r('app.string.Test_Task_error')).margin({top:10}).onClick(()=>{
+ Button($r('app.string.Test_Task_error')).margin({ top: 10 }).onClick(() => {
router.push({
uri: 'pages/TestTaskResourcePage',
});
})
+ Button($r('app.string.test_cache_btn')).margin({ top: 10 }).onClick(() => {
+ router.push({
+ uri: 'pages/TestCacheDataPage',
+ });
+ })
+ Button($r('app.string.test_change_color_btn')).margin({ top: 10 }).onClick(() => {
+ router.push({
+ uri: 'pages/TestChangeColorPage',
+ });
+ })
+ Button($r('app.string.test_cancel_callback_btn')).margin({ top: 10 }).onClick(() => {
+ router.push({
+ uri: 'pages/TestLoadCancelListenerPage',
+ });
+ })
}
- } .width('100%')
+ }.width('100%')
.height('100%')
}
}
\ No newline at end of file
diff --git a/entry/src/main/ets/pages/LoadStatePage.ets b/entry/src/main/ets/pages/LoadStatePage.ets
index 2c0c4d8..876a74e 100644
--- a/entry/src/main/ets/pages/LoadStatePage.ets
+++ b/entry/src/main/ets/pages/LoadStatePage.ets
@@ -79,7 +79,9 @@ struct LoadStatePage {
})
}
.margin({ top: 20 })
- Text(this.typeValue)
+ Text($r('app.string.image_format',this.typeValue))
+ Text($r('app.string.image_width',this.currentWidth))
+ Text($r('app.string.image_height',this.currentHeight))
ImageKnifeComponent({ imageKnifeOption: this.ImageKnifeOption }).height(this.currentHeight).width(this.currentWidth)
.margin({ top: 20 })
Button($r('app.string.Custom_download_failed')).onClick(()=>{
diff --git a/entry/src/main/ets/pages/TestCacheDataPage.ets b/entry/src/main/ets/pages/TestCacheDataPage.ets
new file mode 100644
index 0000000..e8da530
--- /dev/null
+++ b/entry/src/main/ets/pages/TestCacheDataPage.ets
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2024 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, CacheStrategy, ImageKnifeComponent, ImageKnifeOption } from '@ohos/imageknife';
+
+@Entry
+@ComponentV2
+struct TestCacheDataPage {
+ @Local cacheUpLimit: number = 0;
+ @Local currentNum: number = 0;
+ @Local currentSize: number = 0;
+ @Local currentWidth: number = 200
+ @Local currentHeight: number = 200
+ @Local markersLimitText: string = getContext(this).resourceManager.getStringSync($r('app.string.memory'))
+ @Local markersNumText: string = getContext(this).resourceManager.getStringSync($r('app.string.memory'))
+ @Local markersSizeText: string = getContext(this).resourceManager.getStringSync($r('app.string.memory'))
+ @Local ImageKnifeOption: ImageKnifeOption = new ImageKnifeOption({
+ loadSrc: "",
+ objectFit: ImageFit.Contain,
+ onLoadListener: {
+ onLoadFailed: (err) => {
+ console.error("Load Failed Reason: " + err);
+ },
+ onLoadSuccess: (data) => {
+ return data;
+ },
+ },
+ border: { radius: 50 }
+ })
+
+ aboutToAppear(): void {
+ ImageKnife.getInstance().initFileCache(getContext(this), 256, 256 * 1024 * 1024, "ImageKnifeCache1")
+ }
+
+ build() {
+ Column() {
+
+ ImageKnifeComponent(
+ { imageKnifeOption: this.ImageKnifeOption })
+ .height(this.currentHeight)
+ .width(this.currentWidth)
+ .margin({ top: 10 })
+
+ Button($r('app.string.load_memory'))
+ .onClick(() => {
+ this.ImageKnifeOption = new ImageKnifeOption({
+ loadSrc: "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/3e/v3/LqRoLI-PRSu9Nqa8KdJ-pQ/dSqskBpSR9eraAMn7NBdqA.jpg",
+ objectFit: ImageFit.Contain,
+ writeCacheStrategy: CacheStrategy.Memory,
+ border: { radius: 50 },
+ })
+ })
+ Button($r('app.string.load_disk'))
+ .onClick(() => {
+ this.ImageKnifeOption = new ImageKnifeOption({
+ loadSrc: "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/56/v3/8MdhfSsCSMKj4sA6okUWrg/5uBx56tLTUO3RYQl-E5JiQ.jpg",
+ objectFit: ImageFit.Contain,
+ writeCacheStrategy: CacheStrategy.File,
+ border: { radius: 50 },
+ })
+ })
+ Text($r('app.string.cur_cache_limit', this.markersLimitText, this.cacheUpLimit))
+ .fontSize(20)
+ .margin({ bottom: 8 });
+ Text($r('app.string.cur_cache_image_num', this.markersNumText, this.currentNum))
+ .fontSize(20)
+ .margin({ bottom: 8 });
+ Text($r('app.string.cur_cache_size', this.markersSizeText, this.currentSize)).fontSize(20).margin({ bottom: 20 });
+
+ Button($r('app.string.get_cur_memory_limit')).onClick(() => {
+ let result = ImageKnife.getInstance().getCacheUpperLimit(CacheStrategy.Memory);
+ this.markersLimitText = getContext(this).resourceManager.getStringSync($r('app.string.memory'))
+ if (result) {
+ this.cacheUpLimit = result / (1024 * 1024);
+ } else {
+ this.cacheUpLimit = 0;
+ }
+ }).margin({ bottom: 8 });
+ Button($r('app.string.get_img_number_of_cache')).onClick(() => {
+ let result = ImageKnife.getInstance().getCurrentPicturesNum(CacheStrategy.Memory);
+ this.markersNumText = getContext(this).resourceManager.getStringSync($r('app.string.memory'))
+ if (result) {
+ this.currentNum = result;
+ } else {
+ this.currentNum = 0;
+ }
+ }).margin({ bottom: 8 });
+ Button($r('app.string.get_cur_memory_size')).onClick(() => {
+ let result = ImageKnife.getInstance().getCurrentCacheSize(CacheStrategy.Memory);
+ this.markersSizeText = getContext(this).resourceManager.getStringSync($r('app.string.memory'))
+ if (result) {
+ this.currentSize = result / (1024 * 1024);
+ } else {
+ this.currentSize = 0;
+ }
+ }).margin({ bottom: 8 });
+
+ Button($r('app.string.get_cur_disk_limit')).onClick(() => {
+ let result = ImageKnife.getInstance().getCacheUpperLimit(CacheStrategy.File);
+ this.markersLimitText = getContext(this).resourceManager.getStringSync($r('app.string.disk'))
+ if (result) {
+ this.cacheUpLimit = result / (1024 * 1024);
+ } else {
+ this.cacheUpLimit = 0;
+ }
+ }).margin({ bottom: 8 });
+ Button($r('app.string.get_img_number_of_disk')).onClick(() => {
+ let result = ImageKnife.getInstance().getCurrentPicturesNum(CacheStrategy.File);
+ this.markersNumText = getContext(this).resourceManager.getStringSync($r('app.string.disk'))
+ if (result) {
+ this.currentNum = result;
+ } else {
+ this.currentNum = 0;
+ }
+ }).margin({ bottom: 8 });
+ Button($r('app.string.get_cur_disk_size')).onClick(() => {
+ let result = ImageKnife.getInstance().getCurrentCacheSize(CacheStrategy.File);
+ this.markersSizeText = getContext(this).resourceManager.getStringSync($r('app.string.disk'))
+ if (result) {
+ this.currentSize = result / (1024 * 1024);
+ } else {
+ this.currentSize = 0;
+ }
+ }).margin({ bottom: 8 });
+ }
+ .height('100%').width('100%').margin({ top: 50 })
+ }
+}
\ No newline at end of file
diff --git a/entry/src/main/ets/pages/TestChangeColorPage.ets b/entry/src/main/ets/pages/TestChangeColorPage.ets
new file mode 100644
index 0000000..2a282ae
--- /dev/null
+++ b/entry/src/main/ets/pages/TestChangeColorPage.ets
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2024 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 { drawing, common2D } from '@kit.ArkGraphics2D';
+import { ImageKnifeComponent, ImageKnifeOption } from '@ohos/imageknife';
+
+@Entry
+@Component
+struct TestChangeColorPage {
+ private imageOne: Resource = $r('app.media.ic_test_change_color_png');
+ private imageTwo: Resource = $r('app.media.ic_test_change_color_png');
+ @State src: Resource = this.imageOne
+ @State src2: Resource = this.imageTwo
+ @State color: common2D.Color = {
+ alpha: 255,
+ red: 255,
+ green: 1,
+ blue: 1
+ };
+ @State DrawingColorFilterFirst: ColorFilter | undefined = undefined
+
+ build() {
+ Column() {
+ Text($r('app.string.select_color_btn')).margin({ top: 20 })
+ Row() {
+ Button($r('app.string.red')).backgroundColor(Color.Red).margin(5).onClick(() => {
+ this.color = {
+ alpha: 255,
+ red: 255,
+ green: 1,
+ blue: 1
+ };
+ })
+ Button($r('app.string.yellow')).backgroundColor(Color.Yellow).margin(5).onClick(() => {
+ this.color = {
+ alpha: 255,
+ red: 255,
+ green: 255,
+ blue: 1
+ };
+ })
+ Button($r('app.string.green')).backgroundColor(Color.Green).margin(5).onClick(() => {
+ this.color = {
+ alpha: 255,
+ red: 1,
+ green: 255,
+ blue: 1
+ };
+ })
+ Button($r('app.string.blue')).backgroundColor(Color.Blue).margin(5).onClick(() => {
+ this.color = {
+ alpha: 255,
+ red: 1,
+ green: 1,
+ blue: 255
+ };
+ })
+ }
+ .width('100%')
+ .height(50)
+ .justifyContent(FlexAlign.Center)
+
+ Text($r('app.string.master_image')).margin({ top: 20 })
+ ImageKnifeComponent({
+ imageKnifeOption: new ImageKnifeOption({
+ loadSrc: this.src
+ })
+ }).width(110).height(110)
+
+ Text($r('app.string.click_img_to_change_color')).margin({ top: 30 })
+ ImageKnifeComponent({
+ imageKnifeOption: new ImageKnifeOption({
+ loadSrc: this.src,
+ drawingColorFilter: this.DrawingColorFilterFirst
+ })
+ })
+ .onClick(() => {
+ this.DrawingColorFilterFirst =
+ drawing.ColorFilter.createBlendModeColorFilter(this.color, drawing.BlendMode.SRC_IN);
+ }).width(110).height(110)
+
+ Text($r('app.string.test_non_svg_color')).margin({ top: 30 })
+ ImageKnifeComponent({
+ imageKnifeOption: new ImageKnifeOption({
+ loadSrc: $r('app.media.ic_test_change_color_png'),
+ drawingColorFilter: drawing.ColorFilter.createBlendModeColorFilter(this.color, drawing.BlendMode.SRC_IN)
+ })
+ }).width(110).height(110)
+
+ Text($r('app.string.test_svg_color')).margin({ top: 30 })
+ ImageKnifeComponent({
+ imageKnifeOption: new ImageKnifeOption({
+ loadSrc: $r("app.media.ic_test_change_color_svg"),
+ drawingColorFilter: drawing.ColorFilter.createBlendModeColorFilter(this.color, drawing.BlendMode.SRC_IN)
+ })
+ }).width(110).height(110)
+
+ }.width('100%').height('100%')
+ }
+}
\ No newline at end of file
diff --git a/entry/src/main/ets/pages/TestLoadCancelListenerPage.ets b/entry/src/main/ets/pages/TestLoadCancelListenerPage.ets
new file mode 100644
index 0000000..5e97810
--- /dev/null
+++ b/entry/src/main/ets/pages/TestLoadCancelListenerPage.ets
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2024 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 { ImageKnifeComponent, ImageKnifeOption } from '@ohos/imageknife';
+
+@Entry
+@ComponentV2
+struct TestLoadCancelListenerPage {
+ @Local currentWidth: number = 200
+ @Local currentHeight: number = 200
+ @Local showChild: boolean = true;
+ @Local text: string = "";
+ @Local ImageKnifeOption: ImageKnifeOption = new ImageKnifeOption({
+ loadSrc: "",
+ objectFit: ImageFit.Contain,
+ border: { radius: 50 }
+ })
+
+ build() {
+ Column() {
+ Text($r('app.string.onLoadCancel_reason', this.text)).margin(20).fontSize(15)
+ Button($r('app.string.rm_component_of_net'))
+ .margin(20)
+ .onClick(() => {
+ this.ImageKnifeOption = new ImageKnifeOption({
+ loadSrc: "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/76/v3/EyF6z4FISpCHhae38eEexw/OtyAiu-zSSevNQYvUdtVmA.jpg",
+ objectFit: ImageFit.Contain,
+ onLoadListener: {
+ onLoadStart: () => {
+ this.showChild = false;
+ },
+ onLoadCancel: (res) => {
+ this.text = res
+ console.log("TestLoadCancelListenerPage----onLoadCancel> url:" + res)
+ }
+ },
+ border: { radius: 50 }
+ })
+ })
+
+ Button($r('app.string.component_display'))
+ .margin(20).onClick(() => {
+ this.text = "";
+ this.showChild = true;
+ this.ImageKnifeOption = new ImageKnifeOption({
+ loadSrc: "",
+ objectFit: ImageFit.Contain,
+ border: { radius: 50 }
+ })
+ })
+ Button($r('app.string.rm_component_of_local'))
+ .margin(20)
+ .onClick(() => {
+ this.ImageKnifeOption = new ImageKnifeOption({
+ loadSrc: $r('app.media.loading'),
+ objectFit: ImageFit.Contain,
+ onLoadListener: {
+ onLoadStart: () => {
+ this.showChild = false;
+ },
+ onLoadCancel: (res) => {
+ this.text = res
+ console.log("TestLoadCancelListenerPage----onLoadCancel> url:" + res)
+ }
+ },
+ border: { radius: 50 }
+ })
+ })
+
+ if (this.showChild) {
+ ImageKnifeComponent(
+ { imageKnifeOption: this.ImageKnifeOption })
+ .height(150)
+ .width(150)
+ .backgroundColor(Color.Orange)
+ .margin({ top: 20 })
+ }
+ }
+ .height('100%')
+ .width('100%')
+ }
+}
\ No newline at end of file
diff --git a/entry/src/main/resources/base/element/string.json b/entry/src/main/resources/base/element/string.json
index 750b0c0..c16a7d9 100644
--- a/entry/src/main/resources/base/element/string.json
+++ b/entry/src/main/resources/base/element/string.json
@@ -383,6 +383,134 @@
{
"name": "After_the_sampling",
"value": "降采样后大小"
+ },
+ {
+ "name": "image_format",
+ "value": "picture format:%s"
+ },
+ {
+ "name": "image_width",
+ "value": "image width:%d"
+ },
+ {
+ "name": "image_height",
+ "value": "image height:%d"
+ },
+ {
+ "name": "cur_cache_limit",
+ "value": "%s:current cache limit:%fM"
+ },
+ {
+ "name": "cur_cache_image_num",
+ "value": "%s:current cache image number:%d"
+ },
+ {
+ "name": "cur_cache_size",
+ "value": "%s:current cache size:%fM"
+ },
+ {
+ "name": "load_memory",
+ "value": "memory loaded picture"
+ },
+ {
+ "name": "load_disk",
+ "value": "disk cache loads images"
+ },
+ {
+ "name": "get_cur_memory_limit",
+ "value": "gets the current memory cache upper limit"
+ },
+ {
+ "name": "get_img_number_of_cache",
+ "value": "gets the number of images cached in memory"
+ },
+ {
+ "name": "get_cur_memory_size",
+ "value": "gets the size of the current cache"
+ },
+ {
+ "name": "get_cur_disk_limit",
+ "value": "Gets the current disk cache upper limit"
+ },
+ {
+ "name": "get_img_number_of_disk",
+ "value": "gets the number of images cached on disk"
+ },
+ {
+ "name": "get_cur_disk_size",
+ "value": "gets the size of the current disk"
+ },
+ {
+ "name": "select_color_btn",
+ "value": "click to select the color you want to change"
+ },
+ {
+ "name": "click_img_to_change_color",
+ "value": "click on the image to change the image color"
+ },
+ {
+ "name": "test_non_svg_color",
+ "value": "test non-SVG images for color change"
+ },
+ {
+ "name": "test_svg_color",
+ "value": "Test svg picture color change"
+ },
+ {
+ "name": "red",
+ "value": "red"
+ },
+ {
+ "name": "yellow",
+ "value": "yellow"
+ },
+ {
+ "name": "green",
+ "value": "green"
+ },
+ {
+ "name": "blue",
+ "value": "blue"
+ },
+ {
+ "name": "master_image",
+ "value": "master image:"
+ },
+ {
+ "name": "rm_component_of_net",
+ "value": "remove Component - Network load picture"
+ },
+ {
+ "name": "rm_component_of_local",
+ "value": "remove Component - Local resource picture"
+ },
+ {
+ "name": "component_display",
+ "value": "recovery component display"
+ },
+ {
+ "name": "onLoadCancel_reason",
+ "value": "onLoadCancel callback reason:%s"
+ },
+ {
+ "name": "test_cache_btn",
+ "value": "test data for in cache"
+ },
+ {
+ "name": "test_change_color_btn",
+ "value": "test change color for image"
+ },
+ {
+ "name": "test_cancel_callback_btn",
+ "value": "test callback of cancel"
+ },
+ {
+ "name": "memory",
+ "value": "Memory"
+ },
+ {
+ "name": "disk",
+ "value": "Disk"
}
]
}
\ No newline at end of file
diff --git a/entry/src/main/resources/base/media/ic_test_change_color_png.png b/entry/src/main/resources/base/media/ic_test_change_color_png.png
new file mode 100644
index 0000000..75f0a56
Binary files /dev/null and b/entry/src/main/resources/base/media/ic_test_change_color_png.png differ
diff --git a/entry/src/main/resources/base/media/ic_test_change_color_svg.svg b/entry/src/main/resources/base/media/ic_test_change_color_svg.svg
new file mode 100644
index 0000000..39c69c2
--- /dev/null
+++ b/entry/src/main/resources/base/media/ic_test_change_color_svg.svg
@@ -0,0 +1,14 @@
+
+
\ No newline at end of file
diff --git a/entry/src/main/resources/base/profile/main_pages.json b/entry/src/main/resources/base/profile/main_pages.json
index edf3108..623e12e 100644
--- a/entry/src/main/resources/base/profile/main_pages.json
+++ b/entry/src/main/resources/base/profile/main_pages.json
@@ -23,6 +23,9 @@
"pages/TestSetCustomImagePage",
"pages/TestErrorHolderPage",
"pages/TestTaskResourcePage",
- "pages/DownSamplePage"
+ "pages/DownSamplePage",
+ "pages/TestCacheDataPage",
+ "pages/TestChangeColorPage",
+ "pages/TestLoadCancelListenerPage"
]
}
\ No newline at end of file
diff --git a/entry/src/main/resources/zh_CN/element/string.json b/entry/src/main/resources/zh_CN/element/string.json
index 698a69d..5e5e284 100644
--- a/entry/src/main/resources/zh_CN/element/string.json
+++ b/entry/src/main/resources/zh_CN/element/string.json
@@ -379,6 +379,134 @@
{
"name": "After_the_sampling",
"value": "降采样后大小"
+ },
+ {
+ "name": "image_format",
+ "value": "图片格式:%s"
+ },
+ {
+ "name": "image_width",
+ "value": "图片宽度:%d"
+ },
+ {
+ "name": "image_height",
+ "value": "图片高度:%d"
+ },
+ {
+ "name": "cur_cache_limit",
+ "value": "%s:当前缓存上限:%fM"
+ },
+ {
+ "name": "cur_cache_image_num",
+ "value": "%s:当前缓存图片数量:%d"
+ },
+ {
+ "name": "cur_cache_size",
+ "value": "%s:当前缓存的大小:%fM"
+ },
+ {
+ "name": "load_memory",
+ "value": "内存加载图片"
+ },
+ {
+ "name": "load_disk",
+ "value": "磁盘缓存加载图片"
+ },
+ {
+ "name": "get_cur_memory_limit",
+ "value": "获取当前内存缓存上限"
+ },
+ {
+ "name": "get_img_number_of_cache",
+ "value": "获取当前内存缓存图片数量"
+ },
+ {
+ "name": "get_cur_memory_size",
+ "value": "获取当前缓存的大小"
+ },
+ {
+ "name": "get_cur_disk_limit",
+ "value": "获取当前磁盘缓存上限"
+ },
+ {
+ "name": "get_img_number_of_disk",
+ "value": "获取当前磁盘缓存图片数量"
+ },
+ {
+ "name": "get_cur_disk_size",
+ "value": "获取当前磁盘的大小"
+ },
+ {
+ "name": "select_color_btn",
+ "value": "点击选择要更改的颜色"
+ },
+ {
+ "name": "click_img_to_change_color",
+ "value": "点击图片更改图片颜色"
+ },
+ {
+ "name": "test_non_svg_color",
+ "value": "测试非svg图片变色"
+ },
+ {
+ "name": "test_svg_color",
+ "value": "测试svg图片变色"
+ },
+ {
+ "name": "red",
+ "value": "红色"
+ },
+ {
+ "name": "yellow",
+ "value": "黄色"
+ },
+ {
+ "name": "green",
+ "value": "绿色"
+ },
+ {
+ "name": "blue",
+ "value": "蓝色"
+ },
+ {
+ "name": "master_image",
+ "value": "原图:"
+ },
+ {
+ "name": "rm_component_of_net",
+ "value": "移除组件-网络加载图片"
+ },
+ {
+ "name": "rm_component_of_local",
+ "value": "移除组件-本地资源图片"
+ },
+ {
+ "name": "component_display",
+ "value": "恢复组件显示"
+ },
+ {
+ "name": "onLoadCancel_reason",
+ "value": "onLoadCancel回调原因:%s"
+ },
+ {
+ "name": "test_cache_btn",
+ "value": "测试缓存数据"
+ },
+ {
+ "name": "test_change_color_btn",
+ "value": "测试颜色变换"
+ },
+ {
+ "name": "test_cancel_callback_btn",
+ "value": "测试加载取消回调接口"
+ },
+ {
+ "name": "memory",
+ "value": "内存"
+ },
+ {
+ "name": "disk",
+ "value": "磁盘"
}
]
}
\ No newline at end of file
diff --git a/entry/src/ohosTest/ets/test/List.test.ets b/entry/src/ohosTest/ets/test/List.test.ets
index 7bbeda5..9b109cc 100644
--- a/entry/src/ohosTest/ets/test/List.test.ets
+++ b/entry/src/ohosTest/ets/test/List.test.ets
@@ -19,6 +19,8 @@ import MemoryLruCacheTest from './MemoryLruCache.test';
import ImageKnifeTest from './ImageKnife.test';
import Transform from './transform.test';
import SamplingTest from './SamplingTest.test';
+import imageFormatAndSize from './imageFormatAndSize.test'
+
export default function testsuite() {
MemoryLruCacheTest();
FileLruCacheTest();
@@ -27,4 +29,5 @@ export default function testsuite() {
ImageKnifeTest();
Transform();
SamplingTest()
+ imageFormatAndSize();
}
\ No newline at end of file
diff --git a/entry/src/ohosTest/ets/test/imageFormatAndSize.test.ets b/entry/src/ohosTest/ets/test/imageFormatAndSize.test.ets
new file mode 100644
index 0000000..fea2a53
--- /dev/null
+++ b/entry/src/ohosTest/ets/test/imageFormatAndSize.test.ets
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2024 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 { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium';
+import {
+ ImageKnifeOption,
+ ImageKnife,
+ ImageKnifeRequest,
+ ImageKnifeRequestSource,
+ CacheStrategy
+} from "@ohos/imageknife"
+import { common } from '@kit.AbilityKit';
+
+export default function imageFormatAndSize() {
+ describe('imageFormatAndSize', () => {
+ // Defines a test suite. Two parameters are supported: test suite name and test suite function.
+ beforeAll(() => {
+ // Presets an action, which is performed only once before all test cases of the test suite start.
+ // This API supports only one parameter: preset action function.
+ });
+ beforeEach(() => {
+ // Presets an action, which is performed before each unit test case starts.
+ // The number of execution times is the same as the number of test cases defined by **it**.
+ // This API supports only one parameter: preset action function.
+ });
+ afterEach(() => {
+ // Presets a clear action, which is performed after each unit test case ends.
+ // The number of execution times is the same as the number of test cases defined by **it**.
+ // This API supports only one parameter: clear action function.
+ });
+ afterAll(() => {
+ // Presets a clear action, which is performed after all test cases of the test suite end.
+ // This API supports only one parameter: clear action function.
+ });
+ it('getImageSizeInCache', 0, async () => {
+ let width = 0;
+ let height = 0;
+ let imageFormat: string = "";
+ let url: string =
+ "https://contentcenter-drcn.dbankcdn.cn/pub_1/DevEcoSpace_1_900_9/ed/v3/KMO4D6D2QGuVOCLX4AhOFA/ef51xAaLQuK7BsnuD9abog.jpg"
+ let imageKnifeOption: ImageKnifeOption = new ImageKnifeOption({
+ loadSrc: url,
+ })
+ await new Promise((resolve, reject) => {
+ imageKnifeOption.onLoadListener = {
+ onLoadSuccess: (data, imageknifeData) => {
+ resolve("")
+ },
+ onLoadFailed(err) {
+ reject(err)
+ }
+ }
+ let request = new ImageKnifeRequest(
+ imageKnifeOption,
+ imageKnifeOption.context !== undefined ? imageKnifeOption.context : getContext() as common.UIAbilityContext,
+ 0,
+ 0,
+ 0,
+ {
+ showPixelMap(version: number, pixelMap: PixelMap | string) {
+ }
+ }
+ )
+ ImageKnife.getInstance().execute(request);
+ })
+ let data = await ImageKnife.getInstance()
+ .getCacheImage(url, CacheStrategy.Memory);
+ if (data) {
+ width = data.imageWidth
+ height = data.imageHeight
+ imageFormat = data.type!
+ }
+ expect(width != 0).assertTrue();
+ expect(height != 0).assertTrue();
+ expect(imageFormat != "").assertTrue();
+ });
+ });
+}
\ No newline at end of file
diff --git a/library/src/main/ets/ImageKnife.ets b/library/src/main/ets/ImageKnife.ets
index 41eeb64..79c9fe6 100644
--- a/library/src/main/ets/ImageKnife.ets
+++ b/library/src/main/ets/ImageKnife.ets
@@ -302,6 +302,66 @@ export class ImageKnife {
return this.fileCache as FileCache
}
+ /**
+ * get cache upper limit
+ * @param cacheType
+ * @returns
+ */
+ getCacheUpperLimit(cacheType?: CacheStrategy): number | undefined {
+ if (cacheType == undefined || cacheType == CacheStrategy.Default) {
+ cacheType = CacheStrategy.Memory;
+ }
+ if (cacheType == CacheStrategy.Memory) {
+ return (this.memoryCache as MemoryLruCache).maxMemory;
+ } else {
+ if (this.isFileCacheInit()) {
+ return this.fileCache?.maxMemory;
+ } else {
+ throw new Error("the disk cache not init");
+ }
+ }
+ }
+
+ /**
+ * gets the number of images currently cached
+ * @param cacheType
+ * @returns
+ */
+ getCurrentPicturesNum(cacheType: CacheStrategy): number | undefined {
+ if (cacheType == undefined || cacheType == CacheStrategy.Default) {
+ cacheType = CacheStrategy.Memory;
+ }
+ if (cacheType == CacheStrategy.Memory) {
+ return (this.memoryCache as MemoryLruCache).size();
+ } else {
+ if (this.isFileCacheInit()) {
+ return this.fileCache?.size();
+ } else {
+ throw new Error("the disk cache not init");
+ }
+ }
+ }
+
+ /**
+ * gets the current cache size
+ * @param cacheType
+ * @returns
+ */
+ getCurrentCacheSize(cacheType: CacheStrategy): number | undefined {
+ if (cacheType == undefined || cacheType == CacheStrategy.Default) {
+ cacheType = CacheStrategy.Memory;
+ }
+ if (cacheType == CacheStrategy.Memory) {
+ return (this.memoryCache as MemoryLruCache).currentMemory;
+ } else {
+ if (this.isFileCacheInit()) {
+ return this.fileCache?.currentMemory;
+ } else {
+ throw new Error("the disk cache not init");
+ }
+ }
+ }
+
private pixelMapToArrayBuffer(pixelMap: PixelMap): ArrayBuffer {
let imageInfo = pixelMap.getImageInfoSync();