diff --git a/CHANGELOG.md b/CHANGELOG.md index 79244f0..f76286c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ## 2.1.2-rc.7 - 修复图片圆角图形变换导致抗锯齿、ScaleType失效 +- 修复使用模糊化出现图片变模糊和变形 ## 2.1.2-rc.6 - 修复手机调节显示大小时图片消失 diff --git a/README.md b/README.md index 045ea6b..c6c8dac 100644 --- a/README.md +++ b/README.md @@ -367,30 +367,30 @@ request.skipMemoryCache(true) ### 图片变换相关 -| 使用方法 | 类型 | 相关描述 | -|--------------------------------|------------------------------------|----------------------------------| -| request.centerCrop() | CenterCrop | 可以根据图片文件,目标显示大小,进行对应centerCrop | +| 使用方法 | 类型 | 相关描述 | +|--------------------------------|------------------------------------|--------------------------------| +| request.centerCrop() | CenterCrop | 可以根据图片文件,目标显示大小,进行对应centerCrop | | request.centerInside() | CenterInside | 可以根据图片文件,目标显示大小,进行对应centerInside | -| request.fitCenter() | FitCenter | 可以根据图片文件,目标显示大小,进行对应fitCenter | -| request.blur() | BlurTransformation | 模糊处理 | -| request.brightnessFilter() | BrightnessFilterTransformation | 亮度滤波器 | -| request.contrastFilter() | ContrastFilterTransformation | 对比度滤波器 | -| request.cropCircle() | CropCircleTransformation | 圆形剪裁显示 | -| request.cropCircleWithBorder() | CropCircleWithBorderTransformation | 圆环展示 | -| request.cropSquare() | CropSquareTransformation | 正方形剪裁 | -| request.crop() | CropTransformation | 自定义矩形剪裁 | -| request.grayscale() | GrayscaleTransformation | 灰度级转换 | -| request.invertFilter() | InvertFilterTransformation | 反转滤波器 | -| request.pixelationFilter() | PixelationFilterTransformation | 像素化滤波器 | -| request.rotateImage() | RotateImageTransformation | 图片旋转 | -| request.roundedCorners() | RoundedCornersTransformation | 圆角剪裁 | -| request.sepiaFilter() | SepiaFilterTransformation | 乌墨色滤波器 | -| request.sketchFilter() | SketchFilterTransformation | 素描滤波器 | -| request.mask() | MaskTransformation | 遮罩 | -| request.swirlFilter() | SwirlFilterTransformation | 扭曲滤波器 | -| request.kuwaharaFilter() | KuwaharaFilterTransform | 桑原滤波器 | -| request.toonFilter() | ToonFilterTransform | 动画滤波器 | -| request.vignetteFilter() | VignetteFilterTransform | 装饰滤波器 | +| request.fitCenter() | FitCenter | 可以根据图片文件,目标显示大小,进行对应fitCenter | +| request.blur() | BlurTransformation | 模糊处理(图片分辨率较大建议传递第二个参数将图片进行缩小) | +| request.brightnessFilter() | BrightnessFilterTransformation | 亮度滤波器 | +| request.contrastFilter() | ContrastFilterTransformation | 对比度滤波器 | +| request.cropCircle() | CropCircleTransformation | 圆形剪裁显示 | +| request.cropCircleWithBorder() | CropCircleWithBorderTransformation | 圆环展示 | +| request.cropSquare() | CropSquareTransformation | 正方形剪裁 | +| request.crop() | CropTransformation | 自定义矩形剪裁 | +| request.grayscale() | GrayscaleTransformation | 灰度级转换 | +| request.invertFilter() | InvertFilterTransformation | 反转滤波器 | +| request.pixelationFilter() | PixelationFilterTransformation | 像素化滤波器 | +| request.rotateImage() | RotateImageTransformation | 图片旋转 | +| request.roundedCorners() | RoundedCornersTransformation | 圆角剪裁 | +| request.sepiaFilter() | SepiaFilterTransformation | 乌墨色滤波器 | +| request.sketchFilter() | SketchFilterTransformation | 素描滤波器 | +| request.mask() | MaskTransformation | 遮罩 | +| request.swirlFilter() | SwirlFilterTransformation | 扭曲滤波器 | +| request.kuwaharaFilter() | KuwaharaFilterTransform | 桑原滤波器 | +| request.toonFilter() | ToonFilterTransform | 动画滤波器 | +| request.vignetteFilter() | VignetteFilterTransform | 装饰滤波器 | diff --git a/entry/src/main/ets/pages/transformPixelMapPage.ets b/entry/src/main/ets/pages/transformPixelMapPage.ets index 745d1af..152ea0e 100644 --- a/entry/src/main/ets/pages/transformPixelMapPage.ets +++ b/entry/src/main/ets/pages/transformPixelMapPage.ets @@ -406,7 +406,7 @@ struct TransformPixelMapPage { .width(120) .margin({ top: 10 }) .onClick(() => { - this.blurHandlePixelMap(20); + this.blurHandlePixelMap(20,3); }); Image(this.mBlurPixelMap==undefined?'':this.mBlurPixelMap!) .objectFit(ImageFit.Fill) @@ -847,9 +847,9 @@ struct TransformPixelMapPage { /** *模糊 */ - blurHandlePixelMap(radius: number) { + blurHandlePixelMap(radius: number,sampling: number) { let imageKnifeOption = new RequestOption(); - let transformation = new BlurTransformation(radius); + let transformation = new BlurTransformation(radius,sampling); imageKnifeOption.load(mUrl) .addListener({callback:(err:BusinessError|string, data:ImageKnifeData) => { @@ -860,7 +860,7 @@ struct TransformPixelMapPage { .setImageViewSize({ width: vp2px(200), height: vp2px(200) }) .skipMemoryCache(true) .enableGPU() - .blur(radius) + .blur(radius,sampling) ImageKnife?.call(imageKnifeOption); } diff --git a/entry/src/ohosTest/ets/test/transfrom.test.ets b/entry/src/ohosTest/ets/test/transfrom.test.ets index 8db4339..1cdf415 100644 --- a/entry/src/ohosTest/ets/test/transfrom.test.ets +++ b/entry/src/ohosTest/ets/test/transfrom.test.ets @@ -64,10 +64,10 @@ export default function Transform() { it('TestBlurTransformation', 0, ()=>{ let startTime = new Date().getTime(); for (let index = 0; index < BASE_COUNT; index++) { - new BlurTransformation(15); + new BlurTransformation(15,3); } endTime(startTime, 'TestBlurTransformation'); - let blur = new BlurTransformation(15); + let blur = new BlurTransformation(15,3); expect(blur.getName()).assertEqual('BlurTransformation _mRadius:15') }) it('TestBrightnessFilterTransformation', 1, ()=>{ diff --git a/library/src/main/ets/components/imageknife/ImageKnifeComponent.ets b/library/src/main/ets/components/imageknife/ImageKnifeComponent.ets index 2f00e98..13bedbe 100644 --- a/library/src/main/ets/components/imageknife/ImageKnifeComponent.ets +++ b/library/src/main/ets/components/imageknife/ImageKnifeComponent.ets @@ -581,7 +581,7 @@ export struct ImageKnifeComponent { requestAddTransform(request: RequestOption) { if (TransformType.BlurTransformation == this.imageKnifeOption.transform?.transformType) { - request.blur(this.imageKnifeOption.transform?.blur) + request.blur(this.imageKnifeOption.transform?.blur?.radius,this.imageKnifeOption.transform?.blur?.sampling) } else if (TransformType.BrightnessFilterTransformation == this.imageKnifeOption.transform?.transformType) { request.brightnessFilter(this.imageKnifeOption.transform?.brightnessFilter) } else if (TransformType.ContrastFilterTransformation == this.imageKnifeOption.transform?.transformType) { diff --git a/library/src/main/ets/components/imageknife/ImageKnifeOption.ets b/library/src/main/ets/components/imageknife/ImageKnifeOption.ets index 737ebe4..959bb67 100644 --- a/library/src/main/ets/components/imageknife/ImageKnifeOption.ets +++ b/library/src/main/ets/components/imageknife/ImageKnifeOption.ets @@ -37,7 +37,10 @@ export interface Crop{ height: number, cropType: CropType } - +export interface BlurType { + radius: number, + sampling: number +} export interface GifOptions{ loopFinish?: (loopTime?:number) => void speedFactory?: number @@ -45,7 +48,7 @@ export interface GifOptions{ } export interface TransformOptions{ transformType: number, - blur?: number, + blur?: BlurType, roundedCorners?: RoundCorner cropCircleWithBorder?: CropCircleWithBorder crop?:Crop diff --git a/library/src/main/ets/components/imageknife/RequestOption.ets b/library/src/main/ets/components/imageknife/RequestOption.ets index c90482a..50ecd2f 100644 --- a/library/src/main/ets/components/imageknife/RequestOption.ets +++ b/library/src/main/ets/components/imageknife/RequestOption.ets @@ -377,12 +377,17 @@ export class RequestOption { return this; } - blur(radius: number|undefined) { + blur(radius: number|undefined , sampling?: number) { if(radius == undefined){ return } - let transformation = new BlurTransformation(radius) - this.transformations.push(transformation); + if(sampling == undefined) { + let transformation = new BlurTransformation(radius) + this.transformations.push(transformation); + } else { + let transformation = new BlurTransformation(radius,sampling) + this.transformations.push(transformation); + } return this; } diff --git a/library/src/main/ets/components/imageknife/transform/BlurTransformation.ets b/library/src/main/ets/components/imageknife/transform/BlurTransformation.ets index a8c3099..2c30581 100644 --- a/library/src/main/ets/components/imageknife/transform/BlurTransformation.ets +++ b/library/src/main/ets/components/imageknife/transform/BlurTransformation.ets @@ -26,13 +26,19 @@ import {Size} from '../../imageknife/RequestOption' export class BlurTransformation implements BaseTransform { private _mRadius: number; + private sampling: number - constructor(radius: number) { + constructor(radius: number,sampling?:number) { this._mRadius = radius; + if(sampling == undefined){ + this.sampling = 1 + } else { + this.sampling = sampling + } } getName() { - return "BlurTransformation _mRadius:" + this._mRadius; + return "BlurTransformation _mRadius:" + this._mRadius +"==BlurTransformation sampling:"+ this.sampling; } transform(buf: ArrayBuffer, request: RequestOption, func?: AsyncTransform) { @@ -63,8 +69,8 @@ export class BlurTransformation implements BaseTransform { let options:image.DecodingOptions = { editable: true, desiredSize: { - width: targetWidth, - height: targetHeight + width: pixelMapWidth / this.sampling, + height: pixelMapHeight / this.sampling } } imageSource.createPixelMap(options)