update library/src/main/ets/ImageKnifeLoader.ets.

Signed-off-by: 田双明 <tianshuangming@h-partners.com>
This commit is contained in:
田双明 2024-09-26 03:12:32 +00:00 committed by Gitee
parent 48c92b5fe7
commit 14be70d5e6
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
1 changed files with 45 additions and 23 deletions

View File

@ -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<RequestJobResult> {
@ -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
}
}
static async downsamplerReqSize(typeValue:string,request:RequestJobRequest ,size:Size,SRC?:ImageKnifeRequestSource): Promise<image.DecodingOptions>{
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)
}
}
}