diff --git a/library/src/main/ets/downsampling/DownsampleStartegy.ets b/library/src/main/ets/downsampling/DownsampleStartegy.ets index e42861b..8fe9694 100644 --- a/library/src/main/ets/downsampling/DownsampleStartegy.ets +++ b/library/src/main/ets/downsampling/DownsampleStartegy.ets @@ -28,50 +28,16 @@ export class FitCenter implements BaseDownsampling { width: round(getScale(sourceWidth, sourceHeight, requestedWidth, requestedHeight, downsampType) * sourceWidth), height:round(getScale(sourceWidth, sourceHeight, requestedWidth, requestedHeight, downsampType) * sourceHeight) } - let scaleFactor = this.getSampleSizeType(sourceWidth, sourceHeight, requestedWidth, requestedHeight, downsampType)=== - SampleSizeRounding.QUALITY? Math.max(1, highestOneBit(Math.max(sourceWidth / outSize.width, sourceHeight / outSize.height))) : + let scaleFactor = downsampType === DownsampleStrategy.FIT_CENTER_QUALITY? + Math.max(1, highestOneBit(Math.max(sourceWidth / outSize.width, sourceHeight / outSize.height))) : Math.max(1, highestOneBit(Math.min(sourceWidth / outSize.width, sourceHeight / outSize.height)))//将整型的缩放因子转换为2的次幂采样大小 - if (this.getSampleSizeType(sourceWidth, sourceHeight, requestedWidth, requestedHeight, downsampType)=== - SampleSizeRounding.MEMORY && (scaleFactor < (1 / getScale(sourceWidth, sourceHeight, requestedWidth, requestedHeight, downsampType)))) { + if (downsampType === DownsampleStrategy.FIT_CENTER_MEMORY + && (scaleFactor < (1 / getScale(sourceWidth, sourceHeight, requestedWidth, requestedHeight, downsampType)))) { scaleFactor = scaleFactor << 1; } return scaleFactor } - - getSampleSizeType(sourceWidth: number, sourceHeight: number, requestedWidth: number, requestedHeight: number, - downsampType: DownsampleStrategy - ): number { - if (downsampType === DownsampleStrategy.FIT_CENTER_QUALITY) { - return SampleSizeRounding.QUALITY; - } else { - return SampleSizeRounding.MEMORY; - } - - } -} - -export class None implements BaseDownsampling { - getName(): string { - return "DownsampleNone" - } - - public getScaleFactor(sourceWidth: number, sourceHeight: number, requestedWidth: number, - requestedHeight: number): number { - let outSize: Size = { - width: round(sourceWidth), - height:round(sourceHeight) - } - let scaleFactor = - Math.max(1, highestOneBit(Math.max(sourceWidth / outSize.width, sourceHeight / outSize.height))) - return scaleFactor - } - - //实现 getSampleSizeType 方法 - public getSampleSizeType(sourceWidth: number, sourceHeight: number, requestedWidth: number, - requestedHeight: number): SampleSizeRounding { - return SampleSizeRounding.QUALITY - } } @@ -95,11 +61,6 @@ export class CenterOutside implements BaseDownsampling { return scaleFactor } - - getSampleSizeType(sourceWidth: number, sourceHeight: number, requestedWidth: number, - requestedHeight: number): SampleSizeRounding { - return SampleSizeRounding.QUALITY; - } } /*请求尺寸大于实际尺寸不进行放大,按照原图展示*/ @@ -129,13 +90,6 @@ export class AtMost implements BaseDownsampling { } return scaleFactor } - - - getSampleSizeType(sourceWidth: number, sourceHeight: number, requestedWidth: number, - requestHeight: number): SampleSizeRounding { - //根据 AtMost 的逻辑,总是返回 MEMORY - return SampleSizeRounding.MEMORY - } } /*宽高进行等比缩放宽高里面最大的比例先放进去