update library/src/main/ets/downsampling/DownsampleStartegy.ets.
Signed-off-by: 田双明 <tianshuangming@h-partners.com>
This commit is contained in:
parent
c9957c458f
commit
ba95318b57
|
@ -28,50 +28,16 @@ export class FitCenter implements BaseDownsampling {
|
||||||
width: round(getScale(sourceWidth, sourceHeight, requestedWidth, requestedHeight, downsampType) * sourceWidth),
|
width: round(getScale(sourceWidth, sourceHeight, requestedWidth, requestedHeight, downsampType) * sourceWidth),
|
||||||
height:round(getScale(sourceWidth, sourceHeight, requestedWidth, requestedHeight, downsampType) * sourceHeight)
|
height:round(getScale(sourceWidth, sourceHeight, requestedWidth, requestedHeight, downsampType) * sourceHeight)
|
||||||
}
|
}
|
||||||
let scaleFactor = this.getSampleSizeType(sourceWidth, sourceHeight, requestedWidth, requestedHeight, downsampType)===
|
let scaleFactor = downsampType === DownsampleStrategy.FIT_CENTER_QUALITY?
|
||||||
SampleSizeRounding.QUALITY? Math.max(1, highestOneBit(Math.max(sourceWidth / outSize.width, sourceHeight / outSize.height))) :
|
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的次幂采样大小
|
Math.max(1, highestOneBit(Math.min(sourceWidth / outSize.width, sourceHeight / outSize.height)))//将整型的缩放因子转换为2的次幂采样大小
|
||||||
|
|
||||||
if (this.getSampleSizeType(sourceWidth, sourceHeight, requestedWidth, requestedHeight, downsampType)===
|
if (downsampType === DownsampleStrategy.FIT_CENTER_MEMORY
|
||||||
SampleSizeRounding.MEMORY && (scaleFactor < (1 / getScale(sourceWidth, sourceHeight, requestedWidth, requestedHeight, downsampType)))) {
|
&& (scaleFactor < (1 / getScale(sourceWidth, sourceHeight, requestedWidth, requestedHeight, downsampType)))) {
|
||||||
scaleFactor = scaleFactor << 1;
|
scaleFactor = scaleFactor << 1;
|
||||||
}
|
}
|
||||||
return scaleFactor
|
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
|
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
|
return scaleFactor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
getSampleSizeType(sourceWidth: number, sourceHeight: number, requestedWidth: number,
|
|
||||||
requestHeight: number): SampleSizeRounding {
|
|
||||||
//根据 AtMost 的逻辑,总是返回 MEMORY
|
|
||||||
return SampleSizeRounding.MEMORY
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*宽高进行等比缩放宽高里面最大的比例先放进去
|
/*宽高进行等比缩放宽高里面最大的比例先放进去
|
||||||
|
|
Loading…
Reference in New Issue