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)