diff --git a/CHANGELOG.md b/CHANGELOG.md index feea0a4..1ff5214 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 3.0.3-rc.0 +- Custom network method to add request header parameters + ## 3.0.2 - Added new image reloading interface reload - Added return request preload interface preload diff --git a/README_zh.md b/README_zh.md index c716928..5068e66 100644 --- a/README_zh.md +++ b/README_zh.md @@ -287,27 +287,27 @@ ImageKnifeAnimatorComponent({ ### ImageKnifeOption参数列表 -| 参数名称 | 入参内容 | 功能简介 | -|-----------------------|-------------------------------------------------------|-----------------| -| loadSrc | string、PixelMap、Resource | 主图展示 | -| placeholderSrc | PixelMap、Resource | 占位图图展示(可选) | -| errorholderSrc | PixelMap、Resource | 错误图展示(可选) | -| objectFit | ImageFit | 主图填充效果(可选) | -| placeholderObjectFit | ImageFit | 占位图填充效果(可选) | -| errorholderObjectFit | ImageFit | 错误图填充效果(可选) | -| writeCacheStrategy | CacheStrategyType | 写入缓存策略(可选) | -| onlyRetrieveFromCache | boolean | 是否跳过网络和本地请求(可选) | -| customGetImage | (context: Context, src: string | 自定义下载图片(可选) | | Resource | 错误占位图数据源 | -| border | BorderOptions | 边框圆角(可选) | -| priority | taskpool.Priority | 加载优先级(可选) | -| context | common.UIAbilityContext | 上下文(可选) | -| progressListener | (progress: number)=>void | 进度(可选) | -| signature | String | 自定义缓存关键字(可选) | -| headerOption | Array | 设置请求头(可选) | -| transformation | PixelMapTransformation | 图片变换(可选) | -| drawingColorFilter | ColorFilter | drawing.ColorFilter | 图片变换(可选) | -| onComplete | (event:EventImage | undefined) => voi | 颜色滤镜效果(可选) | -| onLoadListener | onLoadStart: () => void、onLoadSuccess: (data: string | PixelMap | undefined) => void、onLoadFailed: (err: string) => void| 监听图片加载成功与失败 | +| 参数名称 | 入参内容 | 功能简介 | +|-----------------------|---------------------------------------------------------------------------------------------------------------------------------------|---------------| +| loadSrc | string、PixelMap、Resource | 主图展示 | +| placeholderSrc | PixelMap、Resource | 占位图图展示(可选) | +| errorholderSrc | PixelMap、Resource | 错误图展示(可选) | +| objectFit | ImageFit | 主图填充效果(可选) | +| placeholderObjectFit | ImageFit | 占位图填充效果(可选) | +| errorholderObjectFit | ImageFit | 错误图填充效果(可选) | +| writeCacheStrategy | CacheStrategyType | 写入缓存策略(可选) | +| onlyRetrieveFromCache | boolean | 是否跳过网络和本地请求(可选) | +| customGetImage | customGetImage?:(context: Context, src: string、PixelMap、Resource ,headers?: Record) => Promise | 自定义下载图片(可选) | | Resource | 错误占位图数据源 | +| border | BorderOptions | 边框圆角(可选) | +| priority | taskpool.Priority | 加载优先级(可选) | +| context | common.UIAbilityContext | 上下文(可选) | +| progressListener | (progress: number)=>void | 进度(可选) | +| signature | String | 自定义缓存关键字(可选) | +| headerOption | Array | 设置请求头(可选) | +| transformation | PixelMapTransformation | 图片变换(可选) | +| drawingColorFilter | ColorFilter | drawing.ColorFilter | 图片变换(可选) | +| onComplete | (event:EventImage | undefined) => voi | 颜色滤镜效果(可选) | +| onLoadListener | onLoadStart: () => void,onLoadSuccess: (data: string、PixelMap、undefined) => void,onLoadFailed: (err: string) => void | 监听图片加载成功与失败 | ### ImageKnife接口 @@ -323,7 +323,7 @@ ImageKnifeAnimatorComponent({ | addHeader | key: string, value: Object | 全局添加http请求头 | | setHeaderOptions | Array | 全局设置http请求头 | | deleteHeader | key: string | 全局删除http请求头 | -| setCustomGetImage | customGetImage?: (context: Context, src: string | PixelMap | Resource) => Promise | 全局设置自定义下载 | +| setCustomGetImage | customGetImage?: (context: Context, src: string、PixelMap、Resource ,headers?: Record) => Promise | PixelMap | Resource) => Promise | 全局设置自定义下载 | | setEngineKeyImpl | IEngineKey | 全局配置缓存key生成策略 | | putCacheImage | url: string, pixelMap: PixelMap, cacheType: CacheStrategy = CacheStrategy.Default, signature?: string | 写入内存磁盘缓存 | | removeMemoryCache | url: string | ImageKnifeOption | 清理指定内存缓存 | diff --git a/entry/src/main/ets/pages/SingleImage.ets b/entry/src/main/ets/pages/SingleImage.ets index 079c8e4..c0bd805 100644 --- a/entry/src/main/ets/pages/SingleImage.ets +++ b/entry/src/main/ets/pages/SingleImage.ets @@ -88,6 +88,10 @@ struct SingleImage { placeholderSrc: $r("app.media.loading"), errorholderSrc: $r("app.media.failed"), objectFit: ImageFit.Contain, + headerOption:[{ + key:"refer", + value:"xx.xx.xx.xx" + }], customGetImage: custom, transformation: new BlurTransformation(10) } @@ -124,8 +128,9 @@ struct SingleImage { // 自定义下载方法 @Concurrent -async function custom(context: Context, src: string | PixelMap | Resource): Promise { - console.info("ImageKnife:: custom download:" + src) +async function custom(context: Context, src: string | PixelMap | Resource,headers?: Record): Promise { + let refer = headers!["refer"] as string + console.info("ImageKnife:: custom download:" + src,"refer:"+refer) // 举例写死从本地文件读取,也可以自己请求网络图片 return context.resourceManager.getMediaContentSync($r("app.media.startIcon").id).buffer as ArrayBuffer } diff --git a/library/oh-package.json5 b/library/oh-package.json5 index 9fdcdc5..d750e5c 100644 --- a/library/oh-package.json5 +++ b/library/oh-package.json5 @@ -14,7 +14,7 @@ "main": "index.ets", "repository": "https://gitee.com/openharmony-tpc/ImageKnife", "type": "module", - "version": "3.0.2", + "version": "3.0.3-rc.0", "dependencies": { "@ohos/gpu_transform": "^1.0.2" }, diff --git a/library/src/main/ets/ImageKnife.ets b/library/src/main/ets/ImageKnife.ets index 3e6cced..c1cab56 100644 --- a/library/src/main/ets/ImageKnife.ets +++ b/library/src/main/ets/ImageKnife.ets @@ -423,10 +423,10 @@ export class ImageKnife { * 全局设置自定义下载 * @param customGetImage 自定义请求函数 */ - setCustomGetImage(customGetImage?: (context: Context, src: string | PixelMap | Resource) => Promise) { + setCustomGetImage(customGetImage?: (context: Context, src: string | PixelMap | Resource,headers?: Record) => Promise) { this.customGetImage = customGetImage } - getCustomGetImage(): undefined | ((context: Context, src: string | PixelMap | Resource) => Promise){ + getCustomGetImage(): undefined | ((context: Context, src: string | PixelMap | Resource,headers?: Record) => Promise){ return this.customGetImage } } \ No newline at end of file diff --git a/library/src/main/ets/ImageKnifeLoader.ets b/library/src/main/ets/ImageKnifeLoader.ets index 1c14d0c..a85a51a 100644 --- a/library/src/main/ets/ImageKnifeLoader.ets +++ b/library/src/main/ets/ImageKnifeLoader.ets @@ -193,7 +193,19 @@ export class ImageKnifeLoader { return ImageKnifeLoader.makeEmptyResult("ImageKnifeAnimatorComponent组件仅支持动态图") } } - + static getHeaderObj(request:RequestJobRequest){ + const headerObj: Record = {} + if (request.headers != undefined) { + request.headers.forEach((value) => { + headerObj[value.key] = value.value + }) + } else if (request.allHeaders.size > 0) { + request.allHeaders.forEach((value, key) => { + headerObj[key] = value + }) + } + return headerObj + } // 获取图片资源 static async getImageArrayBuffer(request: RequestJobRequest, requestList: List | undefined,fileKey:string): Promise { let resBuf: ArrayBuffer | undefined @@ -205,7 +217,8 @@ export class ImageKnifeLoader { if (resBuf === undefined) { LogUtil.log("start customGetImage src=" + request.src) try { - resBuf = await request.customGetImage(request.context, request.src) + const headerObj: Record = ImageKnifeLoader.getHeaderObj(request) + resBuf = await request.customGetImage(request.context, request.src,headerObj) LogUtil.log("end customGetImage src=" + request.src) } catch (err) { throw new Error('customGetImage loadFile failed! err = ' + err) @@ -234,16 +247,7 @@ export class ImageKnifeLoader { let httpRequest = http.createHttp(); let progress: number = 0 let arrayBuffers = new Array() - const headerObj: Record = {} - if (request.headers != undefined) { - request.headers.forEach((value) => { - headerObj[value.key] = value.value - }) - } else if (request.allHeaders.size > 0) { - request.allHeaders.forEach((value, key) => { - headerObj[key] = value - }) - } + const headerObj: Record = ImageKnifeLoader.getHeaderObj(request) httpRequest.on("dataReceive", (data: ArrayBuffer) => { arrayBuffers.push(data) }); diff --git a/library/src/main/ets/model/ImageKnifeData.ets b/library/src/main/ets/model/ImageKnifeData.ets index e8a4c2a..e98836d 100644 --- a/library/src/main/ets/model/ImageKnifeData.ets +++ b/library/src/main/ets/model/ImageKnifeData.ets @@ -91,7 +91,7 @@ export interface RequestJobRequest { allHeaders: Map, componentWidth: number, componentHeight: number, - customGetImage?: (context: Context, src: string | PixelMap | Resource) => Promise, + customGetImage?: (context: Context, src: string | PixelMap | Resource ,headers?: Record) => Promise, onlyRetrieveFromCache?: boolean requestSource: ImageKnifeRequestSource transformation?: PixelMapTransformation diff --git a/library/src/main/ets/model/ImageKnifeOption.ets b/library/src/main/ets/model/ImageKnifeOption.ets index ed70f48..871fa0e 100644 --- a/library/src/main/ets/model/ImageKnifeOption.ets +++ b/library/src/main/ets/model/ImageKnifeOption.ets @@ -61,7 +61,7 @@ export class ImageKnifeOption { placeholderObjectFit?: ImageFit // 错误图填充效果 errorholderObjectFit?: ImageFit - customGetImage?: (context: Context, src: string | PixelMap | Resource) => Promise + customGetImage?: (context: Context, src: string | PixelMap | Resource,headers?: Record) => Promise border?: BorderOptions // 缓存策略 writeCacheStrategy?: CacheStrategy