diff --git a/library/src/main/ets/ImageKnifeLoader.ets b/library/src/main/ets/ImageKnifeLoader.ets index a05cc11..f6ad0a6 100644 --- a/library/src/main/ets/ImageKnifeLoader.ets +++ b/library/src/main/ets/ImageKnifeLoader.ets @@ -39,6 +39,16 @@ class RequestData { /** * ImageKnifeDispatcher 抽取出来的方法,因@Concurrent只能import方法,故抽取到另一个类 */ +interface GeneratedObjectLiteralInterface_1 { + height: number; + width: number; +} + +interface Generated { + editable: boolean; + desiredSize: Size; +} + export class ImageKnifeLoader { static async parseImage(resBuf: ArrayBuffer, typeValue: string, fileKey: string, request: RequestJobRequest): Promise { @@ -75,19 +85,15 @@ export class ImageKnifeLoader { } let size = (await imageSource.getImageInfo()).size - if ((request.downsampType !== undefined && request.downsampType !== DownsampleStrategy.NONE) && - request.requestSource == ImageKnifeRequestSource.SRC) { - let reqSize = - new Downsampler().calculateScaling(typeValue, size.width, size.height, request.targetWidth, - request.targetHeight, request.downsampType) - decodingOptions = { - editable: request.requestSource === ImageKnifeRequestSource.SRC && request.transformation !== undefined ? true : false, - desiredSize: { - width: reqSize.targetWidth, - height: reqSize.targetHeight - } + try{ + if ((request.downsampType !== DownsampleStrategy.NONE) && + request.requestSource == ImageKnifeRequestSource.SRC ) { + decodingOptions =await ImageKnifeLoader.downsamplerReqSize(typeValue,request,size,ImageKnifeRequestSource.SRC) } + }catch(err){ + return ImageKnifeLoader.makeEmptyResult("image.createImageSource failed") } + await imageSource.createPixelMap(decodingOptions) .then((pixelmap: PixelMap) => { resPixelmap = pixelmap @@ -125,18 +131,13 @@ export class ImageKnifeLoader { editable: true, desiredSize: defaultSize }; - if ((request.downsampType !== DownsampleStrategy.NONE && request.downsampType !== undefined) && - request.requestSource == ImageKnifeRequestSource.SRC) { - let reqSize = - new Downsampler().calculateScaling(typeValue, size.width, size.height, request.targetWidth, - request.targetHeight, request.downsampType) - opts = { - editable: true, - desiredSize: { - height: vp2px(reqSize.targetHeight), - width: vp2px(reqSize.targetWidth) - } + try{ + if ((request.downsampType !== DownsampleStrategy.NONE) && + request.requestSource == ImageKnifeRequestSource.SRC ) { + opts =await ImageKnifeLoader.downsamplerReqSize(typeValue,request,size) } + }catch(err){ + return ImageKnifeLoader.makeEmptyResult("image.createImageSource failed") } await imageSource.createPixelMap(opts) .then((pixelmap: PixelMap) => { @@ -382,4 +383,25 @@ export class ImageKnifeLoader { } return resBuf } -} \ No newline at end of file + static async downsamplerReqSize(typeValue:string,request:RequestJobRequest ,size:Size,SRC?:ImageKnifeRequestSource): Promise{ + let reqSize = new Downsampler().calculateScaling(typeValue, size.width, size.height, request.targetWidth, request.targetHeight, request.downsampType) + if(typeValue=="svg") { + return ({ + editable: true, + desiredSize: ({ + height: vp2px(reqSize.targetHeight), + width: vp2px(reqSize.targetWidth) + } as Size) + } as image.DecodingOptions ) + }else { + return( { + editable: request.requestSource ===SRC && request.transformation !== undefined ? true : false, + desiredSize: ({ + width: reqSize.targetWidth, + height: reqSize.targetHeight + }as Size) + }as image.DecodingOptions) + } + } +} +