HarmonyOS 鸿蒙Next createImageReceiver类型设置无效

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

HarmonyOS 鸿蒙Next createImageReceiver类型设置无效

let imageReceiver2 = image.createImageReceiver(
    CameraSize.WIDTH,
    CameraSize.HEIGHT,
    image.ImageFormat.JPEG,
    8
);

let photoSurfaceId2 = await imageReceiver2.getReceivingSurfaceId();

let previewOutput2 = this.cameraManager.createPreviewOutput(previewProfilesObj, photoSurfaceId2);

let index = 0;

imageReceiver2.on('imageArrival', async () => {
    const img = await imageReceiver2.readLatestImage();
    const component = await img.getComponent(4);
    
    const file = await fs.open(
        this.context.filesDir + `/test${index++}.jpg`,
        fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE
    );
    
    await fs.write(file.fd, component.byteBuffer);
    await fs.close(file.fd);
    
    await img.release();
});

相机预览流返回的数据为YUV格式数据,getComponent和createImageReceiver处设置的jpg类型无效,最终落盘存储的数据依然为YUV格式


更多关于HarmonyOS 鸿蒙Next createImageReceiver类型设置无效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

receiver的传入的类型不能约束生产端的数据类型。 相机生产的相机流格式是由应用触发的profile决定的。

更多关于HarmonyOS 鸿蒙Next createImageReceiver类型设置无效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,若遇到createImageReceiver类型设置无效的情况,可能是由于以下几个原因:

  1. 类型不匹配:确保你创建ImageReceiver时指定的类型与期望接收的图像类型一致。例如,如果期望接收的是位图(Bitmap),则类型应正确设置为位图类型。

  2. API使用错误:检查createImageReceiver方法的调用方式是否正确,包括参数传递和返回值处理。确保遵循HarmonyOS的API文档规范。

  3. 系统限制:某些类型的图像接收器可能受到系统限制,特别是在特定的应用场景下。查阅HarmonyOS的官方文档,了解是否存在此类限制。

  4. 版本兼容性问题:确保你的鸿蒙系统版本与createImageReceiver方法所支持的版本一致。有时,新版本的API可能不兼容旧版本的系统。

如果上述检查均无误,但问题依旧存在,可能是系统内部的bug或特定场景下的未定义行为。此时,建议直接联系官网客服以获取进一步的技术支持。

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

回到顶部