diff --git a/CHANGELOG.md b/CHANGELOG.md index fec8946..1cc4c80 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ - Modify memory cache limit and file cache limit - Fix record decodeEndTime in imageKinfaData - Add image buffersize in memory cache +- Optimize the magic number of heif format image files +- Default image request does not require duplicate creation ## 3.2.0-rc.6 - Support LogUtil to turn off log diff --git a/library/src/main/ets/components/ImageKnifeComponent.ets b/library/src/main/ets/components/ImageKnifeComponent.ets index 2cad1ea..fe45efb 100644 --- a/library/src/main/ets/components/ImageKnifeComponent.ets +++ b/library/src/main/ets/components/ImageKnifeComponent.ets @@ -140,40 +140,46 @@ export struct ImageKnifeComponent { } getRequest(width: number, height: number,componentId: number): ImageKnifeRequest { - this.request = new ImageKnifeRequest( - this.imageKnifeOption, - this.imageKnifeOption.context !== undefined ? this.imageKnifeOption.context : this.getCurrentContext(), - width, - height, - this.componentVersion, - { - showPixelMap: (version: number, pixelMap: PixelMap | string,size:Size, requestSource: ImageKnifeRequestSource) => { - if (version !== this.componentVersion) { - return //针对reuse场景,不显示历史图片 - } - this.pixelMap = pixelMap - LogUtil.info('image load showPixelMap:' + this.request?.componentId + ',srcType:' + requestSource + - ',version:' + this.request?.componentVersion + - ',size:' + JSON.stringify(size)) - if (this.imageKnifeOption.objectFit === ImageFit.Auto && this.isImageFitAutoResize == false && requestSource == ImageKnifeRequestSource.SRC) { - this.adaptiveHeight = undefined - this.isImageFitAutoResize = true - } + if (this.imageKnifeOption.downsampleOf !== undefined) { + this.request = undefined + } + + if (this.request == undefined) { + this.request = new ImageKnifeRequest( + this.imageKnifeOption, + this.imageKnifeOption.context !== undefined ? this.imageKnifeOption.context : this.getCurrentContext(), + width, + height, + this.componentVersion, + { + showPixelMap: (version: number, pixelMap: PixelMap | string,size:Size, requestSource: ImageKnifeRequestSource) => { + if (version !== this.componentVersion) { + return //针对reuse场景,不显示历史图片 + } + this.pixelMap = pixelMap + LogUtil.info('image load showPixelMap:' + this.request?.componentId + ',srcType:' + requestSource + + ',version:' + this.request?.componentVersion + + ',size:' + JSON.stringify(size)) + if (this.imageKnifeOption.objectFit === ImageFit.Auto && this.isImageFitAutoResize == false && requestSource == ImageKnifeRequestSource.SRC) { + this.adaptiveHeight = undefined + this.isImageFitAutoResize = true + } - if (requestSource == ImageKnifeRequestSource.SRC) { - this.objectFit = - this.imageKnifeOption.objectFit === undefined ? ImageFit.Contain : this.imageKnifeOption.objectFit - } else if (requestSource == ImageKnifeRequestSource.PLACE_HOLDER) { - this.objectFit = - this.imageKnifeOption.placeholderObjectFit === undefined ? (this.imageKnifeOption.objectFit === undefined ? ImageFit.Contain : this.imageKnifeOption.objectFit) : this.imageKnifeOption.placeholderObjectFit - } else { - this.objectFit = - this.imageKnifeOption.errorholderObjectFit === undefined ? (this.imageKnifeOption.objectFit === undefined ? ImageFit.Contain : this.imageKnifeOption.objectFit) : this.imageKnifeOption.errorholderObjectFit + if (requestSource == ImageKnifeRequestSource.SRC) { + this.objectFit = + this.imageKnifeOption.objectFit === undefined ? ImageFit.Contain : this.imageKnifeOption.objectFit + } else if (requestSource == ImageKnifeRequestSource.PLACE_HOLDER) { + this.objectFit = + this.imageKnifeOption.placeholderObjectFit === undefined ? (this.imageKnifeOption.objectFit === undefined ? ImageFit.Contain : this.imageKnifeOption.objectFit) : this.imageKnifeOption.placeholderObjectFit + } else { + this.objectFit = + this.imageKnifeOption.errorholderObjectFit === undefined ? (this.imageKnifeOption.objectFit === undefined ? ImageFit.Contain : this.imageKnifeOption.objectFit) : this.imageKnifeOption.errorholderObjectFit + } } - } - }, - componentId - ) + }, + componentId + ) + } return this.request } } diff --git a/library/src/main/ets/utils/FileTypeUtil.ets b/library/src/main/ets/utils/FileTypeUtil.ets index 4c20316..7f070df 100644 --- a/library/src/main/ets/utils/FileTypeUtil.ets +++ b/library/src/main/ets/utils/FileTypeUtil.ets @@ -26,7 +26,7 @@ export class FileTypeUtil { 'ico': [new Uint8Array([0x00,0x00,0x01,0x00])], 'tiff': [new Uint8Array([0x49, 0x20, 0x49]), new Uint8Array([0x49, 0x49, 0x2A, 0x00]), new Uint8Array([0x4D, 0x4D, 0x00, 0x2A]), new Uint8Array([0x4D, 0x4D, 0x00, 0x2B])], // 添加更多的文件类型和特征 - 'heic': [new Uint8Array([0x00, 0x00, 0x00, 0x18, 0x66, 0x74, 0x79, 0x70, 0x68, 0x65, 0x69, 0x63, 0x00, 0x00, 0x00, 0x00]),new Uint8Array([0x00, 0x00, 0x00, 0x1C, 0x66, 0x74, 0x79, 0x70, 0x68, 0x65, 0x69, 0x63, 0x00, 0x00, 0x00, 0x00])], + 'heic': [new Uint8Array([0x00, 0x00, 0x00, 0x18, 0x66, 0x74, 0x79, 0x70, 0x68, 0x65, 0x69, 0x63]),new Uint8Array([0x00, 0x00, 0x00, 0x1C, 0x66, 0x74, 0x79, 0x70, 0x6D, 0x69, 0x66, 0x31])], };