HarmonyOS 鸿蒙Next 使用组件截图获得的图片背景色如何设置为透明

发布于 1周前 作者 zlyuanteng 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 使用组件截图获得的图片背景色如何设置为透明

SaveButton()
.onClick((event: ClickEvent, result: SaveButtonOnClickResult) => {

// 建议使用this.getUIContext().getComponentSnapshot().get()
componentSnapshot.get(“01”, async (error: Error, pixmap: image.PixelMap) => {
if (error) {
console.log("error: " + JSON.stringify(error))
return;
}
this.pixmap = pixmap
let context = getContext(this)
let dirPath = context.filesDir + ‘/daoshuriShare’
if (fs.accessSync(dirPath)) {

} else {
fs.mkdirSync(dirPath)
}

const imgBuffer = await this.transferPixelMap2Buffer(this.pixmap);

let filePath = context.filesDir + ‘/daoshuriShare/’ + systemDateTime.getTime() + ‘.jpeg’
let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
let writeLen = fs.writeSync(file.fd, imgBuffer)
console.info(“write data to file succeed and size is:” + writeLen);
fs.close(file)

if (result == SaveButtonOnClickResult.SUCCESS && imgBuffer != undefined) {
try {
const context = getContext(this);
let helper = photoAccessHelper.getPhotoAccessHelper(context);
// onClick触发后10秒内通过createAsset接口创建图片文件,10秒后createAsset权限收回。
let uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, ‘jpeg’);
// 使用uri打开文件,可以持续写入内容,写入过程不受时间限制
let file = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
// 写入文件
await fs.write(file.fd, imgBuffer);
// 关闭文件
await fs.close(file.fd);
promptAction.showToast({
message: ‘保存成功,请前往相册查看’
})
} catch (error) {
console.error("error is " + JSON.stringify(error));
promptAction.showToast({ message: ‘error’ })
}
} else {
console.info(‘读太快了’)
promptAction.showToast({ message: ‘error’ })
}
}, { scale: 2, waitUntilRenderFinished: true })

})

1 回复

在HarmonyOS鸿蒙Next中,若要将使用组件截图获得的图片背景色设置为透明,可以尝试以下方法:

  1. 使用带有透明度通道的颜色代码

    • 在设置组件背景色时,使用带有透明度通道的颜色代码(如rgba(r, g, b, a)#RRGGBBAA),其中a代表透明度,范围从0(完全透明)到1(完全不透明)。
  2. 利用ArkTS的opacity属性

    • 从API Version 7开始,ArkTS支持设置组件的不透明度。可以通过设置opacity属性来调整组件的透明度,例如opacity(0.5)将组件设置为半透明状态。
  3. 检查截图组件设置

    • 确保在截图组件中没有设置固定的背景色,或者背景色没有干扰到透明度的设置。
  4. 验证图片格式

    • 确保截图保存的图片格式支持透明度(如PNG),而不是仅支持不透明背景的图片格式(如JPEG)。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部