From 38144acd93ece587351031bced8e26209a82c65c Mon Sep 17 00:00:00 2001 From: tsm Date: Mon, 2 Sep 2024 10:34:37 +0800 Subject: [PATCH] =?UTF-8?q?=E9=99=8D=E9=87=87=E6=A0=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: tsm --- entry/src/main/ets/pages/DownSamplePage.ets | 43 +++++++++++++++---- library/src/main/ets/ImageKnifeDispatcher.ets | 6 ++- .../ets/downsampling/BaseDownsampling.ets | 5 ++- .../ets/downsampling/DownsampleStartegy.ets | 33 ++++++-------- .../src/main/ets/downsampling/Downsampler.ets | 18 +++++--- library/src/main/ets/key/DefaultEngineKey.ets | 1 + 6 files changed, 66 insertions(+), 40 deletions(-) diff --git a/entry/src/main/ets/pages/DownSamplePage.ets b/entry/src/main/ets/pages/DownSamplePage.ets index 75c351e..b8cc0e6 100644 --- a/entry/src/main/ets/pages/DownSamplePage.ets +++ b/entry/src/main/ets/pages/DownSamplePage.ets @@ -34,9 +34,11 @@ struct DownSamplePage { @Local SamplingList: SamplingType[] = [ new SamplingType(0, "NONE"), new SamplingType(1, "AT_MOST"), - new SamplingType(2, "FIT_CENTER"), - new SamplingType(3, "CENTER_INSIDE"), - new SamplingType(4, "CENTER_OUTSIDE"), + 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"), ] @Local checked: boolean = false @@ -61,27 +63,50 @@ struct DownSamplePage { }) this.originalPixMap($r('app.media.svgSample')) this.afterSamplingFunc($r('app.media.svgSample')) - } else if (value === 'FIT_CENTER') { + } else if (value === 'FIT_CENTER_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.FIT_CENTER + downsampleOf: DownsampleStrategy.FIT_CENTER_MEMORY }) this.originalPixMap($r('app.media.pngSample')) this.afterSamplingFunc($r('app.media.pngSample')) - } else if (value === 'CENTER_INSIDE') { + } + else if (value ==='FIT_CENTER_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.FIT_CENTER_QUALITY + }) + this.originalPixMap($r('app.media.pngSample')) + this.afterSamplingFunc($r('app.media.pngSample')) + } + else if (value === 'CENTER_INSIDE_MEMORY') { this.imageKnifeOption = new ImageKnifeOption({ loadSrc: $r('app.media.jpgSample1'), placeholderSrc: $r("app.media.loading"), errorholderSrc: $r("app.media.app_icon"), objectFit: ImageFit.Contain, - downsampleOf: DownsampleStrategy.CENTER_INSIDE + downsampleOf: DownsampleStrategy.CENTER_INSIDE_MEMORY }) this.originalPixMap($r('app.media.jpgSample1')) this.afterSamplingFunc($r('app.media.jpgSample1')) - } else { + } else if (value === 'CENTER_INSIDE_QUALITY') { + this.imageKnifeOption = new ImageKnifeOption({ + loadSrc: $r('app.media.jpgSample1'), + placeholderSrc: $r("app.media.loading"), + errorholderSrc: $r("app.media.app_icon"), + objectFit: ImageFit.Contain, + downsampleOf: DownsampleStrategy.CENTER_INSIDE_QUALITY + }) + this.originalPixMap($r('app.media.jpgSample1')) + this.afterSamplingFunc($r('app.media.jpgSample1')) + } + else { this.imageKnifeOption = new ImageKnifeOption({ loadSrc: $r('app.media.jpgSample2'), placeholderSrc: $r("app.media.loading"), @@ -106,7 +131,7 @@ struct DownSamplePage { let imageInfo = await imageSource.getImageInfo() let reqSize = new Downsampler().calculateScaling(typeValue, imageInfo.size.width, imageInfo.size.height, 300, - 300, this.imageKnifeOption.downsampleOf, false) + 300, this.imageKnifeOption.downsampleOf) decodingOptions = { editable: true, desiredSize: { diff --git a/library/src/main/ets/ImageKnifeDispatcher.ets b/library/src/main/ets/ImageKnifeDispatcher.ets index bbf5986..b338822 100644 --- a/library/src/main/ets/ImageKnifeDispatcher.ets +++ b/library/src/main/ets/ImageKnifeDispatcher.ets @@ -40,6 +40,8 @@ import { } from './model/ImageKnifeData' import { combineArrayBuffers } from './model/utils'; import { BusinessError } from '@kit.BasicServicesKit'; +import { Downsampler } from './downsampling/Downsampler'; +import { DownsampleStrategy } from './downsampling/DownsampleStartegy'; export class ImageKnifeDispatcher { // 最大并发 @@ -659,7 +661,7 @@ async function requestJob(request: RequestJobRequest, requestList?: List