diff --git a/imageknife/index.ets b/imageknife/index.ets index bbce11a..65530f9 100644 --- a/imageknife/index.ets +++ b/imageknife/index.ets @@ -18,111 +18,109 @@ * cache */ -export * from './src/main/ets/components/cache/FileUtils' -export * from './src/main/ets/components/cache/Base64' -export * from './src/main/ets/components/cache/LruCache' -export * from './src/main/ets/components/cache/diskstrategy/enum/ALL' -export * from './src/main/ets/components/cache/diskstrategy/enum/AUTOMATIC' -export * from './src/main/ets/components/cache/diskstrategy/enum/DATA' -export * from './src/main/ets/components/cache/diskstrategy/enum/NONE' -export * from './src/main/ets/components/cache/diskstrategy/enum/RESOURCE' -export type {EngineKeyInterface} from './src/main/ets/components/cache/key/EngineKeyInterface' -export * from './src/main/ets/components/cache/key/EngineKeyFactories' +export { FileUtils } from './src/main/ets/components/cache/FileUtils' +export { Base64 } from './src/main/ets/components/cache/Base64' +export { LruCache } from './src/main/ets/components/cache/LruCache' +export { ALL } from './src/main/ets/components/cache/diskstrategy/enum/ALL' +export { AUTOMATIC } from './src/main/ets/components/cache/diskstrategy/enum/AUTOMATIC' +export { DATA } from './src/main/ets/components/cache/diskstrategy/enum/DATA' +export { NONE } from './src/main/ets/components/cache/diskstrategy/enum/NONE' +export { RESOURCE } from './src/main/ets/components/cache/diskstrategy/enum/RESOURCE' +export { EngineKeyInterface } from './src/main/ets/components/cache/key/EngineKeyInterface' +export { EngineKeyFactories } from './src/main/ets/components/cache/key/EngineKeyFactories' /** * compress */ -export * from './src/main/ets/components/imageknife/compress/CompressBuilder' -export type {OnCompressListener} from './src/main/ets/components/imageknife/compress/listener/OnCompressListener' -export type {OnRenameListener} from './src/main/ets/components/imageknife/compress/listener/OnRenameListener' -export type {CompressDataListener} from './src/main/ets/components/imageknife/compress/listener/CompressDataListener' -export * from './src/main/ets/components/imageknife/compress/listener/CompressionPredicate' -export * from './src/main/ets/components/imageknife/compress/provider/CompressAdapter' -export * from './src/main/ets/components/imageknife/compress/provider/CompressProvider' -export * from './src/main/ets/components/imageknife/compress/provider/DataStringPathProvider' -export * from './src/main/ets/components/imageknife/compress/provider/RecourseProvider' +export { CompressBuilder } from './src/main/ets/components/imageknife/compress/CompressBuilder' +export { OnCompressListener } from './src/main/ets/components/imageknife/compress/listener/OnCompressListener' +export { OnRenameListener } from './src/main/ets/components/imageknife/compress/listener/OnRenameListener' +export { CompressDataListener } from './src/main/ets/components/imageknife/compress/listener/CompressDataListener' +export { CompressionPredicate } from './src/main/ets/components/imageknife/compress/listener/CompressionPredicate' +export { CompressAdapter } from './src/main/ets/components/imageknife/compress/provider/CompressAdapter' +export { CompressProvider } from './src/main/ets/components/imageknife/compress/provider/CompressProvider' +export { DataStringPathProvider } from './src/main/ets/components/imageknife/compress/provider/DataStringPathProvider' +export { RecourseProvider } from './src/main/ets/components/imageknife/compress/provider/RecourseProvider' /** * crop */ -export * from './src/main/ets/components/imageknife/crop/Crop' -export * from './src/main/ets/components/imageknife/crop/CropImage' -export * from './src/main/ets/components/imageknife/crop/CropOptions' -export * from './src/main/ets/components/imageknife/crop/PixelMapCrop' -export * from './src/main/ets/components/imageknife/crop/CropCallback' + +export { CropImage } from './src/main/ets/components/imageknife/crop/CropImage' +export { CropOptions } from './src/main/ets/components/imageknife/crop/CropOptions' +export { PixelMapCrop,Options } from './src/main/ets/components/imageknife/crop/PixelMapCrop' +export { CropCallback } from './src/main/ets/components/imageknife/crop/CropCallback' /** * transform */ -export type {BaseTransform} from './src/main/ets/components/imageknife/transform/BaseTransform' -export * from './src/main/ets/components/imageknife/transform/BlurTransformation' -export * from './src/main/ets/components/imageknife/transform/BrightnessFilterTransformation' -export * from './src/main/ets/components/imageknife/transform/ContrastFilterTransformation' -export * from './src/main/ets/components/imageknife/transform/CropCircleTransformation' -export * from './src/main/ets/components/imageknife/transform/CropCircleWithBorderTransformation' -export * from './src/main/ets/components/imageknife/transform/CropSquareTransformation' -export * from './src/main/ets/components/imageknife/transform/CropTransformation' -export * from './src/main/ets/components/imageknife/transform/GrayscaleTransformation' -export * from './src/main/ets/components/imageknife/transform/InvertFilterTransformation' -export * from './src/main/ets/components/imageknife/transform/PixelationFilterTransformation' -export * from './src/main/ets/components/imageknife/transform/RotateImageTransformation' -export * from './src/main/ets/components/imageknife/transform/RoundedCornersTransformation' -export * from './src/main/ets/components/imageknife/transform/SepiaFilterTransformation' -export * from './src/main/ets/components/imageknife/transform/SketchFilterTransformation' -export * from './src/main/ets/components/imageknife/transform/MaskTransformation' -export * from './src/main/ets/components/imageknife/transform/SwirlFilterTransformation' -export * from './src/main/ets/components/imageknife/transform/KuwaharaFilterTransform' -export * from './src/main/ets/components/imageknife/transform/ToonFilterTransform' -export * from './src/main/ets/components/imageknife/transform/VignetteFilterTransform' -export * from './src/main/ets/components/imageknife/transform/TransformUtils' -export * from './src/main/ets/components/imageknife/transform/TransformType' -export * from './src/main/ets/components/imageknife/transform/pixelmap/CenterCrop' -export * from './src/main/ets/components/imageknife/transform/pixelmap/CenterInside' -export * from './src/main/ets/components/imageknife/transform/pixelmap/FitCenter' +export { BaseTransform } from './src/main/ets/components/imageknife/transform/BaseTransform' +export { BlurTransformation } from './src/main/ets/components/imageknife/transform/BlurTransformation' +export { BrightnessFilterTransformation } from './src/main/ets/components/imageknife/transform/BrightnessFilterTransformation' +export { ContrastFilterTransformation } from './src/main/ets/components/imageknife/transform/ContrastFilterTransformation' +export { CropCircleTransformation } from './src/main/ets/components/imageknife/transform/CropCircleTransformation' +export { CropCircleWithBorderTransformation,rgbColor } from './src/main/ets/components/imageknife/transform/CropCircleWithBorderTransformation' +export { CropSquareTransformation } from './src/main/ets/components/imageknife/transform/CropSquareTransformation' +export { CropTransformation,CropType } from './src/main/ets/components/imageknife/transform/CropTransformation' +export { GrayscaleTransformation } from './src/main/ets/components/imageknife/transform/GrayscaleTransformation' +export { InvertFilterTransformation } from './src/main/ets/components/imageknife/transform/InvertFilterTransformation' +export { PixelationFilterTransformation } from './src/main/ets/components/imageknife/transform/PixelationFilterTransformation' +export { RotateImageTransformation } from './src/main/ets/components/imageknife/transform/RotateImageTransformation' +export { RoundedCornersTransformation,RoundCorner } from './src/main/ets/components/imageknife/transform/RoundedCornersTransformation' +export { SepiaFilterTransformation } from './src/main/ets/components/imageknife/transform/SepiaFilterTransformation' +export { SketchFilterTransformation } from './src/main/ets/components/imageknife/transform/SketchFilterTransformation' +export { MaskTransformation } from './src/main/ets/components/imageknife/transform/MaskTransformation' +export { SwirlFilterTransformation } from './src/main/ets/components/imageknife/transform/SwirlFilterTransformation' +export { KuwaharaFilterTransform } from './src/main/ets/components/imageknife/transform/KuwaharaFilterTransform' +export { ToonFilterTransform } from './src/main/ets/components/imageknife/transform/ToonFilterTransform' +export { VignetteFilterTransform } from './src/main/ets/components/imageknife/transform/VignetteFilterTransform' +export { TransformUtils } from './src/main/ets/components/imageknife/transform/TransformUtils' +export { TransformType } from './src/main/ets/components/imageknife/transform/TransformType' +export { CenterCrop } from './src/main/ets/components/imageknife/transform/pixelmap/CenterCrop' +export { CenterInside } from './src/main/ets/components/imageknife/transform/pixelmap/CenterInside' +export { FitCenter } from './src/main/ets/components/imageknife/transform/pixelmap/FitCenter' /** * pngj */ -export * from './src/main/ets/components/imageknife/pngj/Pngj' +export { Pngj } from './src/main/ets/components/imageknife/pngj/Pngj' export {handler} from './PngWork' -export * from './src/main/ets/components/3rd_party/upng/UPNG' +export { UPNG } from './src/main/ets/components/3rd_party/upng/UPNG' /** * ImageKnife */ -export * from './src/main/ets/components/imageknife/ImageKnife' -export * from './src/main/ets/components/imageknife/ImageKnifeGlobal' +export { ImageKnife } from './src/main/ets/components/imageknife/ImageKnife' +export { ImageKnifeGlobal } from './src/main/ets/components/imageknife/ImageKnifeGlobal' export {RequestOption,Size} from './src/main/ets/components/imageknife/RequestOption' -export * from './src/main/ets/components/imageknife/ImageKnifeComponent' -export * from './src/main/ets/components/imageknife/ImageKnifeDrawFactory' +export { ImageKnifeComponent } from './src/main/ets/components/imageknife/ImageKnifeComponent' +export { ImageKnifeDrawFactory } from './src/main/ets/components/imageknife/ImageKnifeDrawFactory' export {ImageKnifeOption,CropCircleWithBorder,Crop,GifOptions,TransformOptions} from './src/main/ets/components/imageknife/ImageKnifeOption' -export * from './src/main/ets/components/imageknife/ImageKnifeData' -export type {IAllCacheInfoCallback} from './src/main/ets/components/imageknife/interface/IAllCacheInfoCallback' -export type {AllCacheInfo} from './src/main/ets/components/imageknife/interface/IAllCacheInfoCallback' -export type {IParseImage} from './src/main/ets/components/imageknife/interface/IParseImage' -export type {IDataFetch} from './src/main/ets/components/imageknife/networkmanage/IDataFetch' -export type {ICache} from './src/main/ets/components/imageknife/requestmanage/ICache' -export * from './src/main/ets/components/imageknife/utils/FileTypeUtil' -export * from './src/main/ets/components/imageknife/utils/ParseImageUtil' +export { ImageKnifeData } from './src/main/ets/components/imageknife/ImageKnifeData' +export {IAllCacheInfoCallback} from './src/main/ets/components/imageknife/interface/IAllCacheInfoCallback' +export {AllCacheInfo} from './src/main/ets/components/imageknife/interface/IAllCacheInfoCallback' +export {IParseImage} from './src/main/ets/components/imageknife/interface/IParseImage' +export {IDataFetch} from './src/main/ets/components/imageknife/networkmanage/IDataFetch' +export {ICache} from './src/main/ets/components/imageknife/requestmanage/ICache' /** * svg parse */ -export * from './src/main/ets/components/imageknife/utils/svg/SVGParseImpl' +export { SVGParseImpl } from './src/main/ets/components/imageknife/utils/svg/SVGParseImpl' /** * gif parse */ -export * from './src/main/ets/components/imageknife/utils/gif/GIFParseImpl' -export * from './src/main/ets/components/imageknife/utils/gif/GIFFrame' +export { GIFParseImpl } from './src/main/ets/components/imageknife/utils/gif/GIFParseImpl' +export { GIFFrame } from './src/main/ets/components/imageknife/utils/gif/GIFFrame' // 能力增强worker 解析GIF数据 -export {gifHandler} from './GifWorker' +export { gifHandler } from './GifWorker' // 自定义组件新增 // 自定义组件绘制生命周期 -export type {IDrawLifeCycle} from './src/main/ets/components/imageknife/interface/IDrawLifeCycle' +export { IDrawLifeCycle } from './src/main/ets/components/imageknife/interface/IDrawLifeCycle' // 日志管理 -export * from './src/main/ets/components/imageknife/utils/LogUtil' \ No newline at end of file +export { LogUtil } from './src/main/ets/components/imageknife/utils/LogUtil' \ No newline at end of file diff --git a/imageknife/src/main/ets/components/imageknife/ImageKnife.ets b/imageknife/src/main/ets/components/imageknife/ImageKnife.ets index 6244b91..4bd8554 100644 --- a/imageknife/src/main/ets/components/imageknife/ImageKnife.ets +++ b/imageknife/src/main/ets/components/imageknife/ImageKnife.ets @@ -54,7 +54,9 @@ export class ImageKnife { private diskCacheFolder: string = "ImageKnifeDiskCache" - private defaultListener: AsyncCallback; // 全局监听器 + private defaultListener: AsyncCallback = { + callback:(err: string, data: ImageKnifeData)=>{return false}; + }; // 全局监听器 // gifWorker private gifWorker: worker.ThreadWorker|undefined = undefined; diff --git a/imageknife/src/main/ets/components/imageknife/ImageKnifeComponent.ets b/imageknife/src/main/ets/components/imageknife/ImageKnifeComponent.ets index 88ec7d6..5012101 100644 --- a/imageknife/src/main/ets/components/imageknife/ImageKnifeComponent.ets +++ b/imageknife/src/main/ets/components/imageknife/ImageKnifeComponent.ets @@ -371,7 +371,7 @@ export struct ImageKnifeComponent { } - displayRetryholder = (data: ImageKnifeData|number)=> { + displayRetryholder = (data: ImageKnifeData|number|undefined)=> { if(data == undefined || typeof data == 'number'){ return } @@ -393,7 +393,7 @@ export struct ImageKnifeComponent { } - displayErrorholder = (data: ImageKnifeData|number)=> { + displayErrorholder = (data: ImageKnifeData|number|undefined)=> { if(data == undefined || typeof data == 'number'){ return } @@ -617,10 +617,10 @@ export struct ImageKnifeComponent { this.autoPlay = true context.clearRect(0, 0, compWidth, compHeight) - this.renderFrames_frames = frames, - this.renderFrames_index = 0, - this.renderFrames_context = context, - this.renderFrames_compWidth = compWidth, + this.renderFrames_frames = frames + this.renderFrames_index = 0 + this.renderFrames_context = context + this.renderFrames_compWidth = compWidth this.renderFrames_compHeight = compHeight this.renderFrames() @@ -652,7 +652,7 @@ export struct ImageKnifeComponent { renderFrames_compHeight: number = 0 renderFrames = ()=> { - LogUtil.log('ImageKnifeComponent renderFrames frames length =' + this.renderFrames_frames.length) + LogUtil.log('ImageKnifeComponent renderFrames frames length =' + this.renderFrames_frames?.length) let start = new Date().getTime(); if (this.renderFrames_index === 0) { // 如果是第一帧,我们只从开始渲染前记录时间 @@ -661,7 +661,7 @@ export struct ImageKnifeComponent { // draw Frame this.drawFrame(this.renderFrames_frames, this.renderFrames_index, this.renderFrames_context, this.renderFrames_compWidth, this.renderFrames_compHeight); //如果gif动图只有一帧的情况下,不进行后面代码的逐帧绘制循环 - if (this.renderFrames_frames.length <= 1) { + if (this.renderFrames_frames != undefined && this.renderFrames_frames.length <= 1) { return } @@ -672,9 +672,12 @@ export struct ImageKnifeComponent { if (this.autoPlay) { // 理论上该帧在屏幕上保留的时间 - let stayTime = this.renderFrames_frames[this.renderFrames_index].delay; + let stayTime:number= 0 + if(this.renderFrames_frames != undefined) { + stayTime = this.renderFrames_frames[this.renderFrames_index].delay; + } if (this.imageKnifeOption.gif && this.imageKnifeOption.gif.speedFactory) { - stayTime = this.renderFrames_frames[this.renderFrames_index].delay / (this.imageKnifeOption.gif.speedFactory * 1.0); + stayTime = stayTime / (this.imageKnifeOption.gif?.speedFactory * 1.0); } // 减去程序执行消耗,剩余的准确延迟时间 let delayTime = Math.max(0, Math.floor(stayTime - diff)); @@ -686,26 +689,23 @@ export struct ImageKnifeComponent { // 整个gif累计的时长; this.gifLoopDuration += loopStayTime; // 返回gif一次循环结束回调,并且把当前循环的时间给出 - if (this.renderFrames_index === (this.renderFrames_frames.length - 1) && this.imageKnifeOption.gif && this.imageKnifeOption.gif.loopFinish) { + if (this.renderFrames_frames != undefined && this.renderFrames_index === (this.renderFrames_frames.length - 1) && this.imageKnifeOption.gif != undefined && this.imageKnifeOption.gif?.loopFinish) { this.imageKnifeOption.gif.loopFinish(this.gifLoopDuration) this.gifLoopDuration = 0; } // update the frame index this.renderFrames_index++ - if (this.renderFrames_index >= this.renderFrames_frames.length) { + if (this.renderFrames_frames != undefined && this.renderFrames_index >= this.renderFrames_frames.length) { this.renderFrames_index = 0; } - - // this.renderFrames_frames, - // this.renderFrames_index, - // this.renderFrames_context, - // this.renderFrames_compWidth, - // this.renderFrames_compHeight this.gifTimerId = setTimeout(this.renderFrames, delayTime) } } - private drawFrame(frames: GIFFrame[], index: number, context: CanvasRenderingContext2D, compWidth: number, compHeight: number) { + private drawFrame(frames: GIFFrame[]|undefined, index: number, context: CanvasRenderingContext2D|undefined, compWidth: number, compHeight: number) { + if(frames == undefined){ + return + } // get current frame let frame = frames[index]; if (!frame || !context) { diff --git a/imageknife/src/main/ets/components/imageknife/ImageKnifeDrawFactory.ets b/imageknife/src/main/ets/components/imageknife/ImageKnifeDrawFactory.ets index efe31c0..1f2cce6 100644 --- a/imageknife/src/main/ets/components/imageknife/ImageKnifeDrawFactory.ets +++ b/imageknife/src/main/ets/components/imageknife/ImageKnifeDrawFactory.ets @@ -46,21 +46,21 @@ export class ImageKnifeDrawFactory{ displayMainSource: (context: CanvasRenderingContext2D, data: ImageKnifeData, imageKnifeOption: ImageKnifeOption, compWidth: number, compHeight: number, setGifTimeId?: (timeId: number) => void) => { if (data.isPixelMap()) { - data.drawPixelMap.imagePixelMap.getImageInfo().then((imageInfo) => { + data.drawPixelMap?.imagePixelMap?.getImageInfo().then((imageInfo) => { let scaleType = (typeof imageKnifeOption.mainScaleType == 'number') ? imageKnifeOption.mainScaleType : ScaleType.FIT_CENTER context.clearRect(0,0,compWidth,compHeight) context.save(); // 绘制适配后的图像 context.save(); - ScaleTypeHelper.drawImageWithScaleType(context, scaleType, data.drawPixelMap.imagePixelMap, px2vp(imageInfo.size.width), px2vp(imageInfo.size.height), compWidth, compHeight,0,0) + ScaleTypeHelper.drawImageWithScaleType(context, scaleType, data.drawPixelMap?.imagePixelMap, px2vp(imageInfo.size.width), px2vp(imageInfo.size.height), compWidth, compHeight,0,0) context.restore(); // 使用 destination-in 裁剪出椭圆 context.save(); context.globalCompositeOperation = 'destination-in' context.beginPath(); - ImageKnifeDrawFactory.setOval(context, scaleType, data.drawPixelMap.imagePixelMap, px2vp(imageInfo.size.width), px2vp(imageInfo.size.height), compWidth, compHeight,0,0,borderWidth) + ImageKnifeDrawFactory.setOval(context, scaleType, data.drawPixelMap?.imagePixelMap, px2vp(imageInfo.size.width), px2vp(imageInfo.size.height), compWidth, compHeight,0,0,borderWidth) context.closePath(); context.fill() context.restore(); @@ -72,7 +72,7 @@ export class ImageKnifeDrawFactory{ context.lineWidth = borderWidth; context.globalCompositeOperation = 'source-over' context.beginPath(); - ImageKnifeDrawFactory.setOval(context, scaleType, data.drawPixelMap.imagePixelMap, px2vp(imageInfo.size.width), px2vp(imageInfo.size.height), compWidth, compHeight, 0, 0, borderWidth) + ImageKnifeDrawFactory.setOval(context, scaleType, data.drawPixelMap?.imagePixelMap, px2vp(imageInfo.size.width), px2vp(imageInfo.size.height), compWidth, compHeight, 0, 0, borderWidth) context.closePath(); context.stroke() context.restore(); @@ -108,7 +108,7 @@ export class ImageKnifeDrawFactory{ * @param imageOffsetY * @param borderWidth */ - private static setOval(context: CanvasRenderingContext2D, scaleType: ScaleType, source: PixelMap | ImageBitmap, imageWidth: number, imageHeight: number, compWidth: number, compHeight: number, imageOffsetX:number,imageOffsetY:number + private static setOval(context: CanvasRenderingContext2D, scaleType: ScaleType, source: PixelMap | undefined, imageWidth: number, imageHeight: number, compWidth: number, compHeight: number, imageOffsetX:number,imageOffsetY:number ,borderWidth:number) { let scaleW = compWidth / imageWidth let scaleH = compHeight / imageHeight @@ -209,7 +209,7 @@ export class ImageKnifeDrawFactory{ displayMainSource: (context: CanvasRenderingContext2D, data: ImageKnifeData, imageKnifeOption: ImageKnifeOption, compWidth: number, compHeight: number, setGifTimeId?: (timeId: number) => void) => { if (data.isPixelMap()) { - data.drawPixelMap.imagePixelMap.getImageInfo().then((imageInfo) => { + data.drawPixelMap?.imagePixelMap?.getImageInfo().then((imageInfo) => { let scaleType = (typeof imageKnifeOption.mainScaleType == 'number') ? imageKnifeOption.mainScaleType : ScaleType.FIT_CENTER context.clearRect(0,0,compWidth,compHeight) @@ -217,13 +217,13 @@ export class ImageKnifeDrawFactory{ // 绘制适配后的图像 context.save(); - ScaleTypeHelper.drawImageWithScaleType(context, scaleType, data.drawPixelMap.imagePixelMap, px2vp(imageInfo.size.width), px2vp(imageInfo.size.height), compWidth, compHeight,0,0) + ScaleTypeHelper.drawImageWithScaleType(context, scaleType, data.drawPixelMap?.imagePixelMap, px2vp(imageInfo.size.width), px2vp(imageInfo.size.height), compWidth, compHeight,0,0) context.restore(); // 通过 destination-in 裁剪出圆角 context.save(); context.globalCompositeOperation = 'destination-in' - ImageKnifeDrawFactory.setRect(context, scaleType, data.drawPixelMap.imagePixelMap, px2vp(imageInfo.size.width), px2vp(imageInfo.size.height), compWidth, compHeight,0,0,borderWidth,connerRadius) + ImageKnifeDrawFactory.setRect(context, scaleType, data.drawPixelMap?.imagePixelMap, px2vp(imageInfo.size.width), px2vp(imageInfo.size.height), compWidth, compHeight,0,0,borderWidth,connerRadius) context.fill() context.restore(); if(borderWidth > 0){ @@ -232,7 +232,7 @@ export class ImageKnifeDrawFactory{ context.strokeStyle = colorString context.lineWidth = borderWidth context.globalCompositeOperation = 'source-over' - ImageKnifeDrawFactory.setRect(context, scaleType, data.drawPixelMap.imagePixelMap, px2vp(imageInfo.size.width), px2vp(imageInfo.size.height), compWidth, compHeight,0,0,borderWidth,connerRadius) + ImageKnifeDrawFactory.setRect(context, scaleType, data.drawPixelMap?.imagePixelMap, px2vp(imageInfo.size.width), px2vp(imageInfo.size.height), compWidth, compHeight,0,0,borderWidth,connerRadius) context.stroke() context.restore(); } @@ -268,7 +268,7 @@ export class ImageKnifeDrawFactory{ * @param borderWidth * @param cornerRadius */ - private static setRect(context: CanvasRenderingContext2D, scaleType: ScaleType, source: PixelMap | ImageBitmap, imageWidth: number, imageHeight: number, compWidth: number, compHeight: number, imageOffsetX:number,imageOffsetY:number + private static setRect(context: CanvasRenderingContext2D, scaleType: ScaleType, source: PixelMap | undefined, imageWidth: number, imageHeight: number, compWidth: number, compHeight: number, imageOffsetX:number,imageOffsetY:number ,borderWidth:number,cornerRadius:number) { let scaleW = compWidth / imageWidth let scaleH = compHeight / imageHeight diff --git a/imageknife/src/main/ets/components/imageknife/RequestOption.ets b/imageknife/src/main/ets/components/imageknife/RequestOption.ets index 2c6089c..3ffa238 100644 --- a/imageknife/src/main/ets/components/imageknife/RequestOption.ets +++ b/imageknife/src/main/ets/components/imageknife/RequestOption.ets @@ -235,7 +235,7 @@ export class RequestOption { return this; } - roundedCorners(obj: RoundCorner) { + roundedCorners(obj: RoundCorner|undefined) { if(obj == undefined){ return } @@ -255,7 +255,7 @@ export class RequestOption { return this; } - cropCircleWithBorder(border: number, obj: rgbColor) { + cropCircleWithBorder(border: number|undefined, obj: rgbColor|undefined) { if(border == undefined || obj == undefined){ return } diff --git a/imageknife/src/main/ets/components/imageknife/compress/CompressBuilder.ets b/imageknife/src/main/ets/components/imageknife/compress/CompressBuilder.ets index aa0b5c9..7c29b89 100644 --- a/imageknife/src/main/ets/components/imageknife/compress/CompressBuilder.ets +++ b/imageknife/src/main/ets/components/imageknife/compress/CompressBuilder.ets @@ -38,7 +38,7 @@ export class CompressBuilder { } private _mStreamProviders: Array = new Array(); private _mFocusAlpha: boolean = false; - private _outFilePath: string; + private _outFilePath: string = ''; constructor() { this._mStreamProviders = new Array(); } diff --git a/imageknife/src/main/ets/components/imageknife/compress/Engine.ets b/imageknife/src/main/ets/components/imageknife/compress/Engine.ets index 986f78a..9a4747e 100644 --- a/imageknife/src/main/ets/components/imageknife/compress/Engine.ets +++ b/imageknife/src/main/ets/components/imageknife/compress/Engine.ets @@ -84,7 +84,7 @@ export class Engine { return; } - let imageResource: image.ImageSource = image.createImageSource(buffer as any); + let imageResource: image.ImageSource = image.createImageSource(buffer); imageResource.getImageInfo() .then(info => { let height = info.size.height; diff --git a/imageknife/src/main/ets/components/imageknife/crop/PixelMapCrop.ets b/imageknife/src/main/ets/components/imageknife/crop/PixelMapCrop.ets index ca6c4c4..d01c282 100644 --- a/imageknife/src/main/ets/components/imageknife/crop/PixelMapCrop.ets +++ b/imageknife/src/main/ets/components/imageknife/crop/PixelMapCrop.ets @@ -17,7 +17,7 @@ import { Crop } from './Crop' import { CropCallback } from './CropCallback' import { BusinessError } from '@ohos.base' @Component -struct PixelMapCrop { +export struct PixelMapCrop { @Watch('watchOptions') @Link options: Options; @Watch('watchCropTap') @Prop cropTap: boolean = false; @State bWidth: number = 0; @@ -802,7 +802,7 @@ export class Options { pixelScale: number = 1; // 用户裁剪后的回调 - cropFunction: (error:BusinessError|string, pixelmap:PixelMap, sx:number, sy:number) => void = (error:BusinessError, pixelmap:PixelMap, sx:number, sy:number)=>{}; + cropFunction: (error:BusinessError|string, pixelmap:PixelMap|null, sx:number, sy:number) => void = (error:BusinessError|string, pixelmap:PixelMap|null, sx:number, sy:number)=>{}; // 本地裁剪框 回调 cropAction: (topLeftPoint:number[], bottomRightPoint:number[], scaleInside:number) =>void = (topLeftPoint:number[], bottomRightPoint:number[], scaleInside:number)=>{}; @@ -812,7 +812,7 @@ export class Options { } // 裁剪动作 - setCropFunction(crop: (error:BusinessError, pixelmap:PixelMap, sx:number, sy:number) => void) { + setCropFunction(crop: (error:BusinessError|string, pixelmap:PixelMap|null, sx:number, sy:number) => void) { this.cropFunction = crop; this.cropAction = (topLeftPoint:number[], bottomRightPoint:number[], scaleInside:number) => { diff --git a/imageknife/src/main/ets/components/imageknife/holder/ErrorHolderManager.ets b/imageknife/src/main/ets/components/imageknife/holder/ErrorHolderManager.ets index b7639c5..527d447 100644 --- a/imageknife/src/main/ets/components/imageknife/holder/ErrorHolderManager.ets +++ b/imageknife/src/main/ets/components/imageknife/holder/ErrorHolderManager.ets @@ -13,12 +13,12 @@ * limitations under the License. */ -import { RequestOption } from '../../imageknife/RequestOption' +import { RequestOption,Size } from '../../imageknife/RequestOption' import { FileTypeUtil } from '../../imageknife/utils/FileTypeUtil' import { ImageKnifeData, ImageKnifeType } from '../ImageKnifeData' import { ParseImageUtil } from '../utils/ParseImageUtil' import { SupportFormat } from '../utils/FileTypeUtil' -import { SVGParseImpl,Size } from '../utils/svg/SVGParseImpl' +import { SVGParseImpl } from '../utils/svg/SVGParseImpl' import { ParseResClient } from '../resourcemanage/ParseResClient' import {LogUtil} from '../../imageknife/utils/LogUtil' import image from '@ohos.multimedia.image' diff --git a/imageknife/src/main/ets/components/imageknife/holder/PlaceHolderManager.ets b/imageknife/src/main/ets/components/imageknife/holder/PlaceHolderManager.ets index 30a0caf..612a10f 100644 --- a/imageknife/src/main/ets/components/imageknife/holder/PlaceHolderManager.ets +++ b/imageknife/src/main/ets/components/imageknife/holder/PlaceHolderManager.ets @@ -12,7 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import {RequestOption} from "../../imageknife/RequestOption" +import {RequestOption,Size} from "../../imageknife/RequestOption" import {ResourceTypeEts} from "../../imageknife/constants/ResourceTypeEts" import {Base64} from "../../cache/Base64" import {FileTypeUtil} from "../../imageknife/utils/FileTypeUtil" @@ -20,7 +20,7 @@ import {ImageKnifeData,ImageKnifeType} from "../ImageKnifeData" import {ParseImageUtil} from '../utils/ParseImageUtil' import {ParseResClient} from '../resourcemanage/ParseResClient' import { SupportFormat } from '../utils/FileTypeUtil' -import { SVGParseImpl,Size} from '../utils/svg/SVGParseImpl' +import { SVGParseImpl} from '../utils/svg/SVGParseImpl' import {LogUtil} from '../../imageknife/utils/LogUtil' import resourceManager from '@ohos.resourceManager'; import image from "@ohos.multimedia.image" diff --git a/imageknife/src/main/ets/components/imageknife/holder/RetryHolderManager.ets b/imageknife/src/main/ets/components/imageknife/holder/RetryHolderManager.ets index 6a3b98a..aaf2245 100644 --- a/imageknife/src/main/ets/components/imageknife/holder/RetryHolderManager.ets +++ b/imageknife/src/main/ets/components/imageknife/holder/RetryHolderManager.ets @@ -12,7 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import {RequestOption} from "../../imageknife/RequestOption" +import {RequestOption,Size} from "../../imageknife/RequestOption" import {ResourceTypeEts} from "../../imageknife/constants/ResourceTypeEts" import {Base64} from "../../cache/Base64" import {FileTypeUtil} from "../../imageknife/utils/FileTypeUtil" @@ -20,7 +20,7 @@ import {ImageKnifeData,ImageKnifeType} from "../ImageKnifeData" import {ParseImageUtil} from '../utils/ParseImageUtil' import {ParseResClient} from '../resourcemanage/ParseResClient' import { SupportFormat } from '../utils/FileTypeUtil' -import { SVGParseImpl,Size } from '../utils/svg/SVGParseImpl' +import { SVGParseImpl } from '../utils/svg/SVGParseImpl' import {LogUtil} from '../../imageknife/utils/LogUtil' import resourceManager from '@ohos.resourceManager'; import image from "@ohos.multimedia.image" diff --git a/imageknife/src/main/ets/components/imageknife/requestmanage/MemoryCacheProxy.ets b/imageknife/src/main/ets/components/imageknife/requestmanage/MemoryCacheProxy.ets index 889cc53..bacefa7 100644 --- a/imageknife/src/main/ets/components/imageknife/requestmanage/MemoryCacheProxy.ets +++ b/imageknife/src/main/ets/components/imageknife/requestmanage/MemoryCacheProxy.ets @@ -28,7 +28,7 @@ export class MemoryCacheProxy implements ICache { return "Level1MemoryCache" } - getValue(key: K): V{ + getValue(key: K): V|undefined{ return this.mLruCache.get(key); } @@ -36,7 +36,7 @@ export class MemoryCacheProxy implements ICache { this.mLruCache.put(key, value); } - removeValue(key: K): V{ + removeValue(key: K): V|undefined{ return this.mLruCache.remove(key); } @@ -46,7 +46,7 @@ export class MemoryCacheProxy implements ICache { // 外界调用 - loadMemoryCache(key: K, isMemoryCacheable: boolean): V{ + loadMemoryCache(key: K, isMemoryCacheable: boolean): V | null{ // 是否开启内存缓存 if (!isMemoryCacheable) { return null; diff --git a/imageknife/src/main/ets/components/imageknife/requestmanage/RequestManager.ets b/imageknife/src/main/ets/components/imageknife/requestmanage/RequestManager.ets index 4229ef2..04629b9 100644 --- a/imageknife/src/main/ets/components/imageknife/requestmanage/RequestManager.ets +++ b/imageknife/src/main/ets/components/imageknife/requestmanage/RequestManager.ets @@ -65,10 +65,10 @@ export class RequestManager { private mMemoryCacheProxy: MemoryCacheProxy; private mDiskCacheProxy: DiskCacheProxy; private mIDataFetch: IDataFetch; - private mIResourceFetch: IResourceFetch; + private mIResourceFetch: IResourceFetch; private mParseImageUtil: IParseImage; - constructor(option: RequestOption, memoryCache1: LruCache, diskMemoryCache1: DiskLruCache, dataFetch: IDataFetch, resourceFetch: IResourceFetch) { + constructor(option: RequestOption, memoryCache1: LruCache, diskMemoryCache1: DiskLruCache, dataFetch: IDataFetch, resourceFetch: IResourceFetch) { this.options = option; // 缓存部分 @@ -85,7 +85,7 @@ export class RequestManager { this.mParseImageUtil = new ParseImageUtil(); } - static execute(option: RequestOption, memoryCache1: LruCache, diskMemoryCache1: DiskLruCache, dataFetch: IDataFetch, resourceFetch: IResourceFetch) { + static execute(option: RequestOption, memoryCache1: LruCache, diskMemoryCache1: DiskLruCache, dataFetch: IDataFetch, resourceFetch: IResourceFetch) { LogUtil.log("RequestManager execute") let manager = new RequestManager(option, memoryCache1, diskMemoryCache1, dataFetch, resourceFetch); return new Promise(manager.process) @@ -219,7 +219,7 @@ export class RequestManager { }) } else { if (request.transformations[0]) { - request.transformations[0].transform(arrayBuffer, request, {asyncTransform:(error:BusinessError|string, pixelMap: PixelMap) => { + request.transformations[0].transform(arrayBuffer, request, {asyncTransform:(error:BusinessError|string, pixelMap: PixelMap|null) => { // 输出给Image if (pixelMap) { @@ -323,7 +323,7 @@ export class RequestManager { }) let thumbCallback = this.options.thumbholderOnComplete; let thumbError = this.options.thumbholderOnError; - this.options.transformations[0].transform(source, thumbOption,{asyncTransform: (error:BusinessError|string, pixelMap: PixelMap) => { + this.options.transformations[0].transform(source, thumbOption,{asyncTransform: (error:BusinessError|string, pixelMap: PixelMap|null) => { if (pixelMap) { let imageKnifeData = this.createImagePixelMap(ImageKnifeType.PIXELMAP, pixelMap); thumbCallback(imageKnifeData); @@ -332,7 +332,7 @@ export class RequestManager { } }}) setTimeout(()=>{ - this.options.transformations[0].transform(source, request, {asyncTransform: (error:BusinessError|string, pixelMap: PixelMap) => { + this.options.transformations[0].transform(source, request, {asyncTransform: (error:BusinessError|string, pixelMap: PixelMap|null) => { if (pixelMap) { // 保存一份变换后的图片PixelMap到MemoryCache let imageKnifeData = this.createImagePixelMap(ImageKnifeType.PIXELMAP, pixelMap); @@ -345,7 +345,7 @@ export class RequestManager { },this.options.thumbDelayTime); } else { - this.options.transformations[0].transform(source, request, {asyncTransform: (error:BusinessError|string, pixelMap: PixelMap) => { + this.options.transformations[0].transform(source, request, {asyncTransform: (error:BusinessError|string, pixelMap: PixelMap|null) => { if (pixelMap) { // 保存一份变换后的图片PixelMap到MemoryCache let imageKnifeData = this.createImagePixelMap(ImageKnifeType.PIXELMAP, pixelMap); @@ -473,7 +473,7 @@ export class RequestManager { if (this.options.thumbSizeMultiplier) { this.thumbnailProcess(source, filetype, onComplete, onError); } else { - this.options.transformations[0].transform(source, this.options, {asyncTransform: (error:BusinessError|string, pixelMap: PixelMap) => { + this.options.transformations[0].transform(source, this.options, {asyncTransform: (error:BusinessError|string, pixelMap: PixelMap|null) => { if (pixelMap) { this.saveCacheAndDisk(pixelMap, filetype, onComplete, source); } else { @@ -543,7 +543,7 @@ export class RequestManager { }) let thumbCallback = this.options.thumbholderOnComplete let thumbError = this.options.thumbholderOnError - this.options.transformations[0].transform(source, thumbOption, {asyncTransform: (error:BusinessError|string, pixelMap: PixelMap) => { + this.options.transformations[0].transform(source, thumbOption, {asyncTransform: (error:BusinessError|string, pixelMap: PixelMap|null) => { if (pixelMap) { let imageKnifeData = this.createImagePixelMap(ImageKnifeType.PIXELMAP, pixelMap); thumbCallback(imageKnifeData); @@ -552,7 +552,7 @@ export class RequestManager { } }}) setTimeout(() => { - this.options.transformations[0].transform(source, this.options,{asyncTransform: (error:BusinessError|string, pixelMap: PixelMap) => { + this.options.transformations[0].transform(source, this.options,{asyncTransform: (error:BusinessError|string, pixelMap: PixelMap|null) => { if (pixelMap) { this.saveCacheAndDisk(pixelMap, filetype, onComplete, source); } else { diff --git a/imageknife/src/main/ets/components/imageknife/transform/BrightnessFilterTransformation.ets b/imageknife/src/main/ets/components/imageknife/transform/BrightnessFilterTransformation.ets index fd5d58c..a333210 100644 --- a/imageknife/src/main/ets/components/imageknife/transform/BrightnessFilterTransformation.ets +++ b/imageknife/src/main/ets/components/imageknife/transform/BrightnessFilterTransformation.ets @@ -81,7 +81,7 @@ export class BrightnessFilterTransformation implements BaseTransform { await data.readPixelsToBuffer(bufferData); if (request.gpuEnabled) { - let filter = new GPUImageBrightnessFilter(); + let filter:GPUImageBrightnessFilter = new GPUImageBrightnessFilter(); filter.setImageData(bufferData, targetWidth, targetHeight); filter.setBrightness(this._mBrightness); let buf = await filter.getPixelMapBuf(0, 0, targetWidth, targetHeight); diff --git a/imageknife/src/main/ets/components/imageknife/utils/CalculatePixelUtils.ets b/imageknife/src/main/ets/components/imageknife/utils/CalculatePixelUtils.ets index f7b25e1..85aa52d 100644 --- a/imageknife/src/main/ets/components/imageknife/utils/CalculatePixelUtils.ets +++ b/imageknife/src/main/ets/components/imageknife/utils/CalculatePixelUtils.ets @@ -22,7 +22,7 @@ import { Size } from '../RequestOption' export namespace CalculatePixelUtils { export async function sketch(p: PixelMap, func?: AsyncTransform) { let imageInfo = await p.getImageInfo(); - let size = { + let size:Size = { width: imageInfo.size.width, height: imageInfo.size.height } diff --git a/imageknife/src/main/ets/components/imageknife/utils/FileTypeUtil.ets b/imageknife/src/main/ets/components/imageknife/utils/FileTypeUtil.ets index 526d098..21e28c7 100644 --- a/imageknife/src/main/ets/components/imageknife/utils/FileTypeUtil.ets +++ b/imageknife/src/main/ets/components/imageknife/utils/FileTypeUtil.ets @@ -38,9 +38,9 @@ export class FileTypeUtil { getFileType(arraybuffer: ArrayBuffer):string { - let fileType = undefined; + let fileType:string = ''; if (arraybuffer == null || arraybuffer == undefined || arraybuffer.byteLength <= this.READ_MIN_LENGTH) { - return undefined; + return ''; } let dataView = new DataView(arraybuffer); diff --git a/imageknife/src/main/ets/components/imageknife/utils/K2DArray.ets b/imageknife/src/main/ets/components/imageknife/utils/K2DArray.ets index dc0f811..334d999 100644 --- a/imageknife/src/main/ets/components/imageknife/utils/K2DArray.ets +++ b/imageknife/src/main/ets/components/imageknife/utils/K2DArray.ets @@ -67,9 +67,9 @@ export class K2DArray { /** * 获取值 */ - public getValue(r: number, c: number): number { + public getValue(r: number, c: number): number|undefined{ if (r < 0 || c < 0 || r >= this.rows || c >= this.columns) { - return; + return undefined; } return this._2dArray[r][c]; } diff --git a/imageknife/src/main/ets/components/imageknife/utils/ParseImageUtil.ets b/imageknife/src/main/ets/components/imageknife/utils/ParseImageUtil.ets index ea51f37..a4264f6 100644 --- a/imageknife/src/main/ets/components/imageknife/utils/ParseImageUtil.ets +++ b/imageknife/src/main/ets/components/imageknife/utils/ParseImageUtil.ets @@ -13,7 +13,7 @@ * limitations under the License. */ -import type {IParseImage} from '../interface/IParseImage' +import {IParseImage} from '../interface/IParseImage' import image from '@ohos.multimedia.image'; import { BusinessError } from '@ohos.base' export class ParseImageUtil implements IParseImage { diff --git a/imageknife/src/main/ets/components/imageknife/utils/PixelUtils.ets b/imageknife/src/main/ets/components/imageknife/utils/PixelUtils.ets index e9e468a..0fbb90e 100644 --- a/imageknife/src/main/ets/components/imageknife/utils/PixelUtils.ets +++ b/imageknife/src/main/ets/components/imageknife/utils/PixelUtils.ets @@ -31,7 +31,7 @@ export namespace pixelUtils { height: imageInfo.size.height } if (!size) { - func.asyncTransform("GrayscaleTransformation The image size does not exist.", null) + func?.asyncTransform("GrayscaleTransformation The image size does not exist.", null) return; } let targetWidth:number = size.width; diff --git a/imageknife/src/main/ets/components/imageknife/utils/gif/GIFParseImpl.ets b/imageknife/src/main/ets/components/imageknife/utils/gif/GIFParseImpl.ets index 68cb0be..2160a45 100644 --- a/imageknife/src/main/ets/components/imageknife/utils/gif/GIFParseImpl.ets +++ b/imageknife/src/main/ets/components/imageknife/utils/gif/GIFParseImpl.ets @@ -12,7 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import type { IParseGif } from './IParseGif' +import { IParseGif } from './IParseGif' import { Dims, GIFFrame } from './GIFFrame' import { LoadType } from '../../../../../../../GifWorker' import { parseBufferToFrame } from './parse/GIFParse' @@ -169,7 +169,6 @@ export class GIFParseImpl implements IParseGif { frame['disposalType'] = pages.disposalType[i] let uint8ClampedArray = new Uint8ClampedArray(pages.patch[i]) frame['patch'] = uint8ClampedArray - pages[i] = new Uint8ClampedArray(0) frame['transparentIndex'] = pages.transparentIndex[i] images.push(frame) }