HarmonyOS 鸿蒙Next使用相机服务预览时,前置摄像头清晰后置模糊如何解决
HarmonyOS 鸿蒙Next使用相机服务预览时,前置摄像头清晰后置模糊如何解决 使用相机服务预览时,前置摄像头清晰,后置模糊如何解决
2 回复
参考:
import camera from '@ohos.multimedia.camera';
import { BusinessError } from '@ohos.base';
import image from '@ohos.multimedia.image';
import abilityAccessCtrl, { PermissionRequestResult, Permissions } from '@ohos.abilityAccessCtrl';
import bundleManager from '@ohos.bundle.bundleManager';
import { GlobalContext } from '../utils/GlobalContext';
import Logger from '../utils/Logger';
import common from '@ohos.app.ability.common';
let context = getContext() as common.UIAbilityContext;
let TAG: string = "Index";
let camerasession: camera.CaptureSession
let cameraInput: camera.CameraInput
let photoOutPut: camera.PhotoOutput
let previewOutput: camera.PreviewOutput;
let previewOutput2: camera.PreviewOutput;
let captureSession: camera.CaptureSession;
let cameraWidth = 1920;
let cameraHeight = 1080;
let pixma: PixelMap|undefined = undefined;
@Component
@Entry
struct XComponentPage {
mXComponentController: XComponentController = new XComponentController;
surfaceId: string = '';
@State pixma: PixelMap|undefined = undefined
@State ca :Number = 0
private receiver: image.ImageReceiver = this.createImageReceiver();
async aboutToAppear() {
await grantPermission().then(res => {
console.info(TAG, `权限申请成功 ${JSON.stringify(res)}`);
if (res) {
//预览和拍照
createPhotoAndPreview(this.surfaceId, this.receiver,this.ca);
}
})
}
build() {
Column () {
// 创建XComponent
XComponent({
id: '',
type: 'surface',
libraryname: '',
controller: this.mXComponentController
})
.onLoad(async () => {
// 设置Surface宽高(1920*1080),预览尺寸设置参考前面 previewProfilesArray 获取的当前设备所支持的预览分辨率大小去设置
// 预览流与录像输出流的分辨率的宽高比要保持一致
// this.mXComponentController.setXComponentSurfaceSize({ surfaceWidth: cameraWidth, surfaceHeight: cameraHeight });
// 获取Surface ID
this.surfaceId = this.mXComponentController.getXComponentSurfaceId();
})
.width('1080px')
.height('1920px')
Button () {
Text("拍照")
.fontColor(Color.Black)
.alignSelf(ItemAlign.Center)
.onClick(() => {
let settings: camera.PhotoCaptureSetting = {
quality: camera.QualityLevel.QUALITY_LEVEL_HIGH, // 设置图片质量高
rotation: camera.ImageRotation.ROTATION_0, // 设置图片旋转角度0
mirror: false // 设置镜像使能开关(默认关)
};
photoOutPut.capture(settings, (err: BusinessError) => {
if (err) {
console.error(`Failed to capture the photo. error: ${JSON.stringify(err)}`);
return;
}
console.info('Callback invoked to indicate the photo capture request success.');
});
})
}
.width(100)
.height(100)
Button('摄像头_front')
.size({ width: 150, height: 34 })
.margin({ left: 10 })
.onClick(() => {
this.ca=1
removeSession(captureSession,cameraInput, previewOutput, photoOutPut)
createPhotoAndPreview(this.surfaceId, this.receiver,this.ca)
// this.cameraController.setDevicePosition(DevicePosition.front);
})
Button('摄像头_back')
.size({ width: 150, height: 34 })
.margin({ left: 10 })
.onClick(() => {
this.ca=0
removeSession(captureSession,cameraInput, previewOutput, photoOutPut)
createPhotoAndPreview(this.surfaceId, this.receiver,this.ca)
// this.cameraController.setDevicePosition(DevicePosition.back);
})
}
}
更多关于HarmonyOS 鸿蒙Next使用相机服务预览时,前置摄像头清晰后置模糊如何解决的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
针对HarmonyOS 鸿蒙Next在使用相机服务预览时,前置摄像头清晰而后置摄像头模糊的问题,可能的原因及解决方案如下:
-
摄像头硬件检查:
- 确认后置摄像头没有物理损坏或遮挡。
- 清洁摄像头镜头,确保无灰尘或污渍。
-
软件设置检查:
- 检查相机应用的设置,确保后置摄像头的分辨率、对焦模式等参数正确。
- 尝试重置相机应用到默认设置,看是否恢复正常。
-
系统更新:
- 确保鸿蒙系统已更新到最新版本,有时系统更新能解决兼容性问题。
-
权限管理:
- 确认应用已获取相机使用的全部必要权限。
-
第三方应用问题:
- 如果问题出现在特定第三方应用上,尝试更新该应用或卸载后重新安装。
-
重启设备:
- 尝试重启设备,有时能解决临时性故障。
如果经过上述步骤问题依旧没法解决,请联系官网客服。官网地址是:https://www.itying.com/category-93-b0.html ,他们将为您提供更专业的技术支持。