修改uuid的生成方式,使用资源loadSrc,宽高以及转换效果的拼接字符串作为入参,修复同资源图形转换错乱的问题。

Signed-off-by: chongtiantian <chongtiantian1@h-partners.com>
This commit is contained in:
chongtiantian 2024-07-01 16:07:57 +08:00
parent db1ccdc604
commit e48600fe7f
4 changed files with 41 additions and 2 deletions

View File

@ -1,5 +1,6 @@
## 2.3.0-rc.1
- 修复file://格式图片无法显示
- 修改uuid的生成方式使用资源loadSrc宽高以及转换效果的拼接字符串作为入参 修复同资源图形转换错乱的问题
## 2.3.0-rc.0
- 增加gif图duration的默认值以及默认播放次数

View File

@ -47,6 +47,12 @@ struct transformsPage {
placeholderSrc: $r('app.media.icon_loading'),
errorholderSrc: $r('app.media.icon_failed')
};
@State option1: ImageKnifeOption = {
loadSrc: $r('app.media.pngSample'),
}
@State option2: ImageKnifeOption = {
loadSrc: $r('app.media.pngSample'),
}
private transformations: Array<BaseTransform<PixelMap>> = new Array();
private blurTransformation: BlurTransformation = new BlurTransformation(15, 3);
private brightnessFilterTransformation: BrightnessFilterTransformation = new BrightnessFilterTransformation(0.5);
@ -452,6 +458,33 @@ struct transformsPage {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
ImageKnifeComponent({ imageKnifeOption: this.imageKnifeOption }).width(300).height(300)
}.width(400).height(400).margin({ top: 10 }).backgroundColor(Color.Pink)
Button("同资源不同转换效果").onClick(() => {
this.option1 = {
loadSrc: $r('app.media.pngSample'),
errorholderSrc: $r("app.media.app_icon"),
transformation: new CropCircleTransformation()
}
this.option2 = {
loadSrc: $r('app.media.pngSample'),
errorholderSrc: $r("app.media.app_icon"),
transformations: [new RotateImageTransformation(45), new InvertFilterTransformation()]
}
}).margin(10).backgroundColor(Color.Blue)
Flex({direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center}) {
ImageKnifeComponent({
imageKnifeOption: this.option1
}).width(300)
.height(300)
.margin(10)
.borderWidth(3)
ImageKnifeComponent({
imageKnifeOption: this.option2
}).width(300)
.height(300)
.margin(10)
.borderWidth(3)
}
}
}
.width('100%')

View File

@ -404,11 +404,12 @@ export struct ImageKnifeComponent {
this.lastSrc = this.imageKnifeOption.loadSrc;
}
this.detachFromLayout = this.request.detachFromLayout;
// 先配置request的属性
this.configDisplay(this.request);
if (this.request.loadSrc!=this.lastSrc) {
this.configNecessary(this.request);
}
this.configCacheStrategy(this.request);
this.configDisplay(this.request);
this.configHspContext(this.request);
this.configRenderGpu(this.request);
let imageKnife: ImageKnife | undefined = ImageKnifeGlobal?.getInstance()?.getImageKnife();

View File

@ -208,7 +208,11 @@ export class RequestOption {
this.transformations = array;
}
generateUUID(): string {
return SparkMD5.hashBinary(JSON.stringify(this.loadSrc)) as string;
let content: string = JSON.stringify(this.loadSrc) + ',' + this.size.width + ',' + this.size.height;
if (this.transformations.length) {
content += JSON.stringify(this.transformations);
}
return SparkMD5.hashBinary(content);
}
setModuleContext(moduleCtx: common.UIAbilityContext) {