# ImageSword **Repository Path**: ywp7913/image-sword ## Basic Information - **Project Name**: ImageSword - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-03-18 - **Last Updated**: 2024-03-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ImageKnifeNext ## 简介 本项目是一款在OpenHarmony artks应用开发中使用的图片缓存组件,对标安卓glide,参考@ohos/imageknife源码重构 - 支持内存缓存,使用LRUCache算法,对图片数据进行内存缓存。 - 支持磁盘缓存,对于下载图片会保存一份至磁盘当中。 - 支持option自定义图片获取/下载 - 支持option传入border,设置边框,圆角 - 支持监听网络下载回调进度 - 支持通过initMemoryCache设置自定义策略内存缓存 - 支持objectFit: ImageFit.Auto,图片自适应高度 待实现特性 - gif/webp动图显示与控制 - 内存降采样优化,节约内存的占用 - 提供能力,支持手缩放图片 - 支持自定义图片加载和请求并发数量 - 支持声明周期已销毁的图片,不再发起请求 - 支持自定义图片解码 - 支持优先级的设置(通过taskpool优先级实现) - 支持自定义key的实现 - 支持进行图片变换: 支持图像像素源图片变换效果。 待确认Image的能力 - 动图的显示与控制 - 禁用缓存,避免重复缓存 - 控制缩放 - 合理使用降采样 ## 下载安装 暂时未发布ohpm,开发中 ## 使用说明 #### 1.显示本地资源图片 ``` ImageKnifeNextComponent({ imageKnifeNextOption: { src: $r("app.media.app_icon"), placeholderSrc: $r("app.media.loading"), errorholderSrc: $r("app.media.app_icon"), objectFit: ImageFit.Auto } }).width(100).height(100) ``` #### 2.显示本地context files下文件 ``` ImageKnifeNextComponent({ imageKnifeNextOption: { src: this.localFile, placeholderSrc: $r("app.media.loading"), errorholderSrc: $r("app.media.app_icon"), objectFit: ImageFit.Auto } }).width(100).height(100) ``` #### 3.显示网络图片 ``` ImageKnifeNextComponent({ imageKnifeNextOption: { src:"https://www.openharmony.cn/_nuxt/img/logo.dcf95b3.png", placeholderSrc: $r("app.media.loading"), errorholderSrc: $r("app.media.app_icon"), objectFit: ImageFit.Auto } }).width(100).height(100) ``` #### 4.自定义下载图片 ``` ImageKnifeNextComponent({ imageKnifeNextOption: { src: "https://file.atomgit.com/uploads/user/1704857786989_8994.jpeg", placeholderSrc: $r("app.media.loading"), errorholderSrc: $r("app.media.app_icon"), objectFit: ImageFit.Auto, customGetImage: custom } }).width(100).height(100) // 自定义下载方法 @Concurrent async function custom(context: Context, src: string | PixelMap | Resource): Promise { console.info("ImageKnifeNext:: custom download:" + src) // 举例写死从本地文件读取,也可以自己请求网络图片 return context.resourceManager.getMediaContentSync($r("app.media.bb").id).buffer as ArrayBuffer } ``` #### 5.监听网络下载进度 ``` ImageKnifeNextComponent({ imageKnifeNextOption: { src:"https://www.openharmony.cn/_nuxt/img/logo.dcf95b3.png", progressListener:(progress:number)=>{console.info("ImageSword:: call back progress = " + progress)} } }).width(100).height(100) ``` #### 6.支持option传入border,设置边框,圆角 ``` ImageKnifeNextComponent({ imageKnifeNextOption: { src: $r("app.media.rabbit"), border: {radius:50} } }).width(100).height(100) ``` ## 约束与限制 API11 ## 贡献代码 使用过程中发现任何问题都可以提 [issue](https://gitee.com/42690727/image-sword/issues) 给我们,当然,我们也非常欢迎你给我们发 [PR](https://gitee.com/42690727/image-sword/issues) 。 ## 开源协议 本项目基于 [Apache License 2.0](https://gitee.com/42690727/image-sword/blob/master/LICENSE) ,请自由的享受和参与开源。