HarmonyOS组件截图保存到相册失败,预览图灰色
代码如下:
import { componentSnapshot, componentUtils } from '@kit.ArkUI';
import { common } from '@kit.AbilityKit';
import { photoAccessHelper } from '@kit.MediaLibraryKit';
import fs from '@ohos.file.fs';
@Entry
@Component
struct PhotoPage {
@State pixelMap: PixelMap | undefined = undefined;
build() {
Column({ space: 20 }) {
Column() {
Text("Hello World")
.fontSize(18)
.fontColor(Color.White)
}
.width("80%")
.height(200)
.backgroundColor(Color.Blue)
.justifyContent(FlexAlign.Center)
.alignItems(HorizontalAlign.Center)
.borderRadius(16)
.id("_card_test")
SaveButton({
icon: SaveIconStyle.FULL_FILLED,
text: SaveDescription.SAVE_IMAGE, buttonType:
ButtonType.Capsule
})
.onClick(async (event: ClickEvent, result: SaveButtonOnClickResult) => {
if (result == SaveButtonOnClickResult.SUCCESS) {
try {
let pixelMap = await componentSnapshot.get("_card_test");
let info = componentUtils.getRectangleById("_card_test");
console.error("width: " + info.size.width + ", height: " + info.size.height);
this.pixelMap = pixelMap;
await this.savePhoto(pixelMap);
} catch (error) {
console.error("error is: " + JSON.stringify(error));
}
}
})
Image(this.pixelMap)
.width("80%")
.height(200)
}
.width("100%")
.height("100%")
}
async savePhoto(pixelMap: PixelMap): Promise<void> {
try {
// 将pixelMap写入到缓冲区ArrayBuffer中
let pixelBytesNumber: number = pixelMap.getPixelBytesNumber();
const readBuffer: ArrayBuffer = new ArrayBuffer(pixelBytesNumber);
await pixelMap.readPixelsToBuffer(readBuffer);
console.error("readBuffer: " + readBuffer.byteLength);
// 创建空文件
let context = getContext(this) as common.UIAbilityContext;
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
let uri = await phAccessHelper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'jpg');
console.error("uri: " + uri.toString());
// 打开文件
let file = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
// 将缓冲区数据写入到文件中
let writeLen = await fs.write(file.fd, readBuffer);
console.error("writeLen: " + writeLen);
// 关闭文件
await fs.close(file.fd);
} catch (error) {
console.error("savePhoto error: " + error);
}
}
}
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS 组件截图然后保存到相册中后无法显示,尺寸为0
26浏览 • 1回复 待解决
应用内组件截图并保存到用户文件
883浏览 • 1回复 待解决
HarmonyOS组件截图后如何将PixelMap保存至系统相册
444浏览 • 1回复 待解决
HarmonyOS如何将PixelMap保存到相册?
408浏览 • 1回复 待解决
HarmonyOS如何把图片保存到手机相册
349浏览 • 1回复 待解决
HarmonyOS 录像的视频如何保存到系统相册
645浏览 • 1回复 待解决
获取网络图片并保存到相册
1185浏览 • 1回复 待解决
组件截图怎么保存将pixelMap存储到系统相册或应用沙箱
500浏览 • 1回复 待解决
怎么把视频保存到相册以及主机端?
3728浏览 • 1回复 待解决
如何将视频保存到相册以及主机端
5396浏览 • 1回复 待解决
HarmonyOS 如何实现获取用户头像保存到系统相册
470浏览 • 1回复 待解决
HarmonyOS 如何将base64的图片保存到相册
688浏览 • 1回复 待解决
pixelMap 和 imageSource 的数据类型如何保存到相册
1988浏览 • 1回复 待解决
有谁知道如何将图片保存到相册
863浏览 • 1回复 待解决
HarmonyOS生产的二维码图保存到本地图片无效
446浏览 • 1回复 待解决
HarmonyOS 组件截图并发过多时,报错,截图失败。 错误码:100001
106浏览 • 1回复 待解决
HarmonyOS PhotoViewPicker 保存到图库
378浏览 • 1回复 待解决
图片保存到相册codelabs示例部分语法不支持高版本
1636浏览 • 1回复 待解决
HarmonyOS调用相册管理api,创建并保存图片至相册失败,查看图片是空白
287浏览 • 1回复 待解决
HarmonyOS图片保存相册问题
300浏览 • 1回复 待解决
HarmonyOS filePreview预览txt提示预览失败
399浏览 • 1回复 待解决
HarmonyOS 保存图片到相册问题
11浏览 • 0回复 待解决
HarmonyOS如何将图片的base64格式文件通过解码保存到相册
440浏览 • 1回复 待解决
HarmonyOS 创建相机预览失败
392浏览 • 1回复 待解决
HarmonyOS 相册保存图片设置title报错
258浏览 • 1回复 待解决
存在问题,需要保存图片需要调用packing编码获取buffer,参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/image-encoding-0000001861886509-V5https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/media/image-overview.md