HarmonyOS 鸿蒙Next自定义相机拍照问题
HarmonyOS 鸿蒙Next自定义相机拍照问题
因为是全屏的相机拍摄,
所以放大了1.3倍,
this.mXComponentController.setXComponentSurfaceRect({offsetX:0,offsetY:0, surfaceWidth: DisplayUtils.getScreenWH()[0]*1.3, surfaceHeight: DisplayUtils.getScreenWH()[0]1.31920/1080 });
然后前置摄像头拍摄出来的画面是非镜像的,我设置了这个 mirror
let photoCaptureSetting: camera.PhotoCaptureSetting = {
quality: camera.QualityLevel.QUALITY_LEVEL_HIGH, // 设置图片质量高
rotation: camera.ImageRotation.ROTATION_0, // 设置图片旋转角度0
mirror: this.cameraManager.photoOutput?.isMirrorSupported() ? true : false // 镜像
}
await this.cameraManager.photoOutput?.capture(photoCaptureSetting).catch((error: BusinessError) => {
console.log(‘拍照失败’, JSON.stringify(error));
return
});
photoOutput.on(‘photoAvailable’, (errCode: BusinessError, photo: camera.Photo): void => {
console.info(CameraDemo getPhoto start. err: ${JSON.stringify(errCode)}
);
if (errCode || photo === undefined || photo.main === undefined) {
console.error(‘CameraDemo getPhoto failed’);
return;
}
let imageObj = photo.main;
imageObj.getComponent(image.ComponentType.JPEG, async (errCode: BusinessError, component: image.Component): Promise<void> => {
console.info(‘CameraDemo getComponent start’, JSON.stringify(errCode), JSON.stringify(component));
if (errCode || component === undefined) {
console.error(‘CameraDemo getComponent failed’);
return;
}
let buffer: ArrayBuffer;
if (component.byteBuffer) {
buffer = component.byteBuffer;
this.buffer = buffer;
let sourceOptions: image.SourceOptions = {
sourceDensity: 0, // 在不确定当前密度时传0
sourcePixelFormat: image.PixelMapFormat.RGBA_8888,
sourceSize: this.imageSize
}
let imageSource: image.ImageSource = image.createImageSource(buffer, sourceOptions);
let opts: image.InitializationOptions = {
editable: false,
pixelFormat: image.PixelMapFormat.RGBA_8888,
size: this.imageSize
}
let pixelMap = await imageSource.createPixelMap(opts);
this.finalPixelMap = pixelMap;
} else {
console.error(‘CameraDemo byteBuffer is null’);
return;
}
});
获取到的照片位置略有不同,可能是我放大1.3倍导致的不同?有啥解决办法
4 回复
楼主您好,该问题需要demo代码进行分析,建议通过在线提单提交问题。
已经提单了,他们也没有什么好办法
针对HarmonyOS 鸿蒙Next自定义相机拍照问题,以下是一些可能的解决方案:
- 检查相机权限:确保应用已获取相机权限,且相机功能未被系统或其他应用禁用。
- 检查相机设置:在自定义相机应用中,检查相机设置是否正确,包括分辨率、对焦模式、白平衡等。
- 更新系统版本:确保HarmonyOS鸿蒙Next系统已更新至最新版本,以获取最新的系统优化和相机功能改进。
- 检查应用代码:如果是开发者遇到此问题,需检查相机调用代码是否正确,包括相机初始化、预览、拍照等流程。
- 硬件检测:若以上方法均无效,可能是硬件问题。建议通过华为官方渠道进行硬件检测,以确定问题所在。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。他们将为您提供更专业的技术支持和解决方案。