最近帮人写个应用,需要上传到设备上背景图片,所以先写个demo试试。
(详细代码已上传到100个实例的仓库,由于是在华为手机上做的应用,api用的17)
https://gitee.com/JiuLiuXiaBan_admin/openharmony_100_projects
首先记得开权限
"requestPermissions": [
{
"name": "ohos.permission.READ_MEDIA",
"reason": "$string:module_desc",
"usedScene": {
"abilities": [
"$string:EntryAbility_desc"
],
"when":"always"
}
},
{
"name": "ohos.permission.WRITE_MEDIA",
"reason": "$string:module_desc",
"usedScene": {
"abilities": [
"$string:EntryAbility_desc"
],
"when":"always"
}
}
]
启动的时候要判断下权限
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let context: Context = this.context;
atManager.requestPermissionsFromUser(context, permissions).then((data) => {
let grantStatus: Array<number> = data.authResults;
let length: number = grantStatus.length;
for (let i = 0; i < length; i++) {
if (grantStatus[i] === 0) {
// 用户授权,可以继续访问目标操作
} else {
// 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限
return;
}
}
windowStage.loadContent('pages/Index', (err) => {
if (err.code) {
hilog.error(DOMAIN, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err));
return;
}
hilog.info(DOMAIN, 'testTag', 'Succeeded in loading the content.');
});
}).catch((err: BusinessError) => {
console.error('data:' + JSON.stringify(err));
});
注意,图片的大小需要大于代码中的设定
我这边设定的是 2048
@State captureRegionRealWidth: number = 2048;
@State captureRegionRealHeight: number = 2048;
整体按照比例显示,按照比列最终转换成像素
let x: number = 0;
let y: number = 0;
x = Math.floor((this.imageRealWidth * this.positionX) / this.screenWidth);
y = Math.floor((this.imageRealWidth * (this.positionY - this.minY)) / this.screenWidth);
this.cropImage(this.selectImage,x,y,this.captureRegionRealWidth,this.captureRegionRealHeight);
以下是运行效果





OpenHarmony图片裁切实战教程

被折叠的 条评论
为什么被折叠?



