From 02fae0e740b25897bf79e8565c473f5a60719272 Mon Sep 17 00:00:00 2001 From: tsm Date: Fri, 18 Oct 2024 15:19:39 +0800 Subject: [PATCH] =?UTF-8?q?=E9=99=8D=E9=87=87=E6=A0=B7=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: tsm --- README.md | 6 +++--- entry/src/main/ets/pages/DownSamplePage.ets | 21 +++++++++++-------- .../ohosTest/ets/test/SamplingTest.test.ets | 8 +++---- library/src/main/ets/ImageKnifeLoader.ets | 6 +++--- .../ets/downsampling/DownsampleStartegy.ets | 8 +++---- .../src/main/ets/downsampling/Downsampler.ets | 6 +++--- 6 files changed, 29 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index c1ff405..23624dd 100644 --- a/README.md +++ b/README.md @@ -327,9 +327,9 @@ Clear the component content in the **aboutToRecycle** lifecycle and trigger imag | AT_MOST | 请求尺寸大于实际尺寸不进行放大 | | FIT_CENTER_MEMORY | 两边自适应内存优先 | | FIT_CENTER_QUALITY | 两边自适应质量优先 | -| CENTER_INSIDE_MEMORY | 宽高缩放比最大的比例,进行缩放适配内存优先 | -| CENTER_INSIDE_QUALITY | 宽高缩放比最大的比例,进行缩放适配质量优先 | -| CENTER_OUTSIDE | 根据宽高的最小的比例,进行适配 | +| CENTER_OUTSIDE_MEMORY | 宽高缩放比最大的比例,进行缩放适配内存优先 | +| CENTER_OUTSIDE_QUALITY | 宽高缩放比最大的比例,进行缩放适配质量优先 | +| AT_LEAST | 根据宽高的最小的比例,进行适配 | ### ImageKnife | Parameter | Type | Description | diff --git a/entry/src/main/ets/pages/DownSamplePage.ets b/entry/src/main/ets/pages/DownSamplePage.ets index 2922f03..aeaa9af 100644 --- a/entry/src/main/ets/pages/DownSamplePage.ets +++ b/entry/src/main/ets/pages/DownSamplePage.ets @@ -32,13 +32,16 @@ struct DownSamplePage { @Local beforeSampling: number = 0 @Local afterSampling: number = 0 @Local SamplingList: SamplingType[] = [ - new SamplingType(0, "NONE"), + + new SamplingType(7, "AT_LEAST"), new SamplingType(1, "AT_MOST"), + new SamplingType(2, "FIT_CENTER_MEMORY"), new SamplingType(4, "FIT_CENTER_QUALITY"), - new SamplingType(5, "CENTER_INSIDE_MEMORY"), - new SamplingType(6, "CENTER_INSIDE_QUALITY"), - new SamplingType(7, "CENTER_OUTSIDE"), + new SamplingType(5, "CENTER_OUTSIDE_MEMORY"), + new SamplingType(6, "CENTER_OUTSIDE_QUALITY"), + new SamplingType(0, "NONE"), + ] @Local checked: boolean = false @@ -83,23 +86,23 @@ struct DownSamplePage { }) this.originalPixMap($r('app.media.pngSample')) this.afterSamplingFunc($r('app.media.pngSample')) - } else if (value === 'CENTER_INSIDE_MEMORY') { + } else if (value === 'CENTER_OUTSIDE_MEMORY') { this.imageKnifeOption = new ImageKnifeOption({ loadSrc: $r('app.media.pngSample'), placeholderSrc: $r("app.media.loading"), errorholderSrc: $r("app.media.app_icon"), objectFit: ImageFit.Contain, - downsampleOf: DownsampleStrategy.CENTER_INSIDE_MEMORY + downsampleOf: DownsampleStrategy.CENTER_OUTSIDE_MEMORY }) this.originalPixMap($r('app.media.pngSample')) this.afterSamplingFunc($r('app.media.pngSample')) - } else if (value === 'CENTER_INSIDE_QUALITY') { + } else if (value === 'CENTER_OUTSIDE_QUALITY') { this.imageKnifeOption = new ImageKnifeOption({ loadSrc: $r('app.media.pngSample'), placeholderSrc: $r("app.media.loading"), errorholderSrc: $r("app.media.app_icon"), objectFit: ImageFit.Contain, - downsampleOf: DownsampleStrategy.CENTER_INSIDE_QUALITY + downsampleOf: DownsampleStrategy.CENTER_OUTSIDE_QUALITY }) this.originalPixMap($r('app.media.pngSample')) this.afterSamplingFunc($r('app.media.pngSample')) @@ -109,7 +112,7 @@ struct DownSamplePage { placeholderSrc: $r("app.media.loading"), errorholderSrc: $r("app.media.app_icon"), objectFit: ImageFit.Contain, - downsampleOf: DownsampleStrategy.CENTER_OUTSIDE + downsampleOf: DownsampleStrategy.AT_LEAST }) this.originalPixMap($r('app.media.pngSample')) this.afterSamplingFunc($r('app.media.pngSample')) diff --git a/entry/src/ohosTest/ets/test/SamplingTest.test.ets b/entry/src/ohosTest/ets/test/SamplingTest.test.ets index 732f2ff..074057d 100644 --- a/entry/src/ohosTest/ets/test/SamplingTest.test.ets +++ b/entry/src/ohosTest/ets/test/SamplingTest.test.ets @@ -60,17 +60,17 @@ export default function SamplingTest() { let req = (reqSize.targetWidth < 1024 && reqSize.targetHeight < 1024) expect(req).assertEqual(true); }) - it('CENTER_INSIDE', 3, () => { + it('CENTER_OUTSIDE', 3, () => { let reqSize: calculateScaleType = new Downsampler().calculateScaling('jpg', 1024, 1024, 200, - 200, DownsampleStrategy.CENTER_INSIDE_MEMORY) + 200, DownsampleStrategy.CENTER_OUTSIDE_MEMORY) let req = (reqSize.targetWidth < 1024 && reqSize.targetHeight < 1024) expect(req).assertEqual(true); }) - it('CENTER_OUTSIDE', 4, () => { + it('AT_LEAST', 4, () => { let reqSize: calculateScaleType = new Downsampler().calculateScaling('jpg', 1024, 1024, 200, - 200, DownsampleStrategy.CENTER_OUTSIDE) + 200, DownsampleStrategy.AT_LEAST) let req = (reqSize.targetWidth < 1024 && reqSize.targetHeight < 1024) expect(req).assertEqual(true); }) diff --git a/library/src/main/ets/ImageKnifeLoader.ets b/library/src/main/ets/ImageKnifeLoader.ets index 1379d6b..b00e5fb 100644 --- a/library/src/main/ets/ImageKnifeLoader.ets +++ b/library/src/main/ets/ImageKnifeLoader.ets @@ -78,7 +78,7 @@ export class ImageKnifeLoader { try { if ((request.downsampType !== DownsampleStrategy.NONE) && request.requestSource == ImageKnifeRequestSource.SRC) { - decodingOptions = ImageKnifeLoader.downsamplerReqSize(typeValue, request, size, ImageKnifeRequestSource.SRC) + decodingOptions = ImageKnifeLoader.getDownsamplerDecodingOptions(typeValue, request, size, ImageKnifeRequestSource.SRC) } } catch (err) { return ImageKnifeLoader.makeEmptyResult(err) @@ -124,7 +124,7 @@ export class ImageKnifeLoader { try { if ((request.downsampType !== DownsampleStrategy.NONE) && request.requestSource == ImageKnifeRequestSource.SRC) { - opts = ImageKnifeLoader.downsamplerReqSize(typeValue, request, size) + opts = ImageKnifeLoader.getDownsamplerDecodingOptions(typeValue, request, size) } } catch (err) { return ImageKnifeLoader.makeEmptyResult(err) @@ -374,7 +374,7 @@ export class ImageKnifeLoader { return resBuf } - static downsamplerReqSize(typeValue: string, request: RequestJobRequest, size: Size, + static getDownsamplerDecodingOptions(typeValue: string, request: RequestJobRequest, size: Size, SRC?: ImageKnifeRequestSource):image.DecodingOptions { let reqSize = new Downsampler().calculateScaling(typeValue, size.width, size.height, request.targetWidth, request.targetHeight, diff --git a/library/src/main/ets/downsampling/DownsampleStartegy.ets b/library/src/main/ets/downsampling/DownsampleStartegy.ets index a2b6432..0446568 100644 --- a/library/src/main/ets/downsampling/DownsampleStartegy.ets +++ b/library/src/main/ets/downsampling/DownsampleStartegy.ets @@ -126,7 +126,7 @@ export class CenterInside implements BaseDownsampling { return SampleSizeRounding.QUALITY } //否则,使用 FIL_CENTER 的 SampleSizeRounding 值 - return downsampType === DownsampleStrategy.CENTER_INSIDE_MEMORY?SampleSizeRounding.MEMORY:SampleSizeRounding.QUALITY + return downsampType === DownsampleStrategy.CENTER_OUTSIDE_MEMORY?SampleSizeRounding.MEMORY:SampleSizeRounding.QUALITY } } @@ -138,11 +138,11 @@ export enum DownsampleStrategy { //两边自适应质量优先 FIT_CENTER_QUALITY, //按照宽高比的最大比进行适配内存优先 - CENTER_INSIDE_MEMORY, + CENTER_OUTSIDE_MEMORY, //按照宽高比的最大比进行适配质量优先 - CENTER_INSIDE_QUALITY, + CENTER_OUTSIDE_QUALITY, //宽高进行等比缩放宽高里面最小的比例先放进去,然后再根据原图的缩放比去适配 - CENTER_OUTSIDE, + AT_LEAST, //不进行降采样 NONE, } \ No newline at end of file diff --git a/library/src/main/ets/downsampling/Downsampler.ets b/library/src/main/ets/downsampling/Downsampler.ets index 3a66fb1..2a0a49f 100644 --- a/library/src/main/ets/downsampling/Downsampler.ets +++ b/library/src/main/ets/downsampling/Downsampler.ets @@ -61,10 +61,10 @@ export class Downsampler { return new FitCenter(); case DownsampleStrategy.AT_MOST: return new AtMost(); - case DownsampleStrategy.CENTER_INSIDE_MEMORY: - case DownsampleStrategy.CENTER_INSIDE_QUALITY: + case DownsampleStrategy.CENTER_OUTSIDE_MEMORY: + case DownsampleStrategy.CENTER_OUTSIDE_QUALITY: return new CenterInside(); - case DownsampleStrategy.CENTER_OUTSIDE: + case DownsampleStrategy.AT_LEAST: return new CenterOutside(); default: throw new Error('Unsupported downsampling strategy');