您现在的位置是:首页 > 编程 > 

鸿蒙next开发中如何解决相机在全屏预览的时候,画面会有变形和拉伸的问题?

2025-07-28 05:54:50
鸿蒙next开发中如何解决相机在全屏预览的时候,画面会有变形和拉伸的问题? 问题描述:为啥相机在全屏预览的时候,画面会有变形和拉伸?问题分析:如果你在相机开发的时候,设置的预览画面是全屏的尺寸:meta60 2760/1260=2.19, 预览用的相机尺寸是1920/1080=1.777 那么这个预览画面1.77投在xcomponent2.19比例上,必然会拉伸变形;所以要全屏预览还要不变形:需要

鸿蒙next开发中如何解决相机在全屏预览的时候,画面会有变形和拉伸的问题?

问题描述:为啥相机在全屏预览的时候,画面会有变形和拉伸?问题分析:

如果你在相机开发的时候,设置的预览画面是全屏的尺寸:meta60 2760/1260=2.19, 预览用的相机尺寸是1920/1080=1.777 那么这个预览画面1.77投在xcomponent2.19比例上,必然会拉伸变形;

所以要全屏预览还要不变形:需要先获取手机的宽高比,用手机的屏幕的height/width去和相机底层支持的预览尺寸的 width/height 去取最贴近的值

也就是cameraOutputCapability.previewProfiles的分辨率列表中选择26/1080 = 2.16 这套参数,两个比值只相差 0.0 最合适

解决方案代码语言:js复制
封装方法

 //查【相机全屏预览宽高】最接近的手机默认分辨率
  findClosestumber(cameraOutputCapability:camera.CameraOutputCapability,profileType:string):camera.Profile|undefined {
     let profileArr=cameraOutputCapability.previewProfiles;    //预览的分辨率
     if(profileType=='PhotoProfile'){
         profileArr = cameraOutputCapability.photoProfiles;   //相机支持的分辨率列表
      }
      let screenWidth=display.getDefaultDisplaySync().width
      let screenHeight=display.getDefaultDisplaySync().height
      let target:number=0;
      if(profileArr.length < 1) {
        return undefined;
      }
      if(screenWidth&&screenHeight){
          target=screenHeight/screenWidth       //全屏幕宽高比例
       }
      let closest = profileArr[0]; // 初始化最接近的数为数组的第一个元素
      let smallestDifference = Math.abs(profileArr[0].size.width/profileArr[0].size.height - target); // 初始化最小差值为第一个元素与目标值的差值
        for (let i = 1; i < profileArr.length; i++) {
        if(profileArr[i].size.width>=1080){  //避免小分辨率的比例算出来的数据也相临近,只计算分辨率大于1080的
          let currentDifference = Math.abs(profileArr[i].size.width/profileArr[i].size.height - target);
          if (currentDifference <= smallestDifference) {
            smallestDifference = currentDifference;
            closest = profileArr[i];
          }
        }
      }
      return closest;  //返回全屏时候最佳的分辨率

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1218130.html

相关标签:无
上传时间: 2025-07-25 10:15:03
留言与评论(共有 18 条评论)
本站网友 乱七八糟的意思
20分钟前 发表
画面会有变形和拉伸?问题分析:如果你在相机开发的时候
本站网友 保利花园二手房
9分钟前 发表
number=0; if(profileArr.length < 1) { return undefined; } if(screenWidth&&screenHeight){ target=screenHeight/screenWidth //全屏幕宽高比例 } let closest = profileArr[0]; // 初始化最接近的数为数组的第一个元素 let smallestDifference = Math.abs(profileArr[0].size.width/profileArr[0].size.height - target); // 初始化最小差值为第一个元素与目标值的差值 for (let i = 1; i < profileArr.length; i++) { if(profileArr[i].size.width>=1080){ //避免小分辨率的比例算出来的数据也相临近
本站网友 华亚
27分钟前 发表
string)
本站网友 万象新天
27分钟前 发表
设置的预览画面是全屏的尺寸:meta60 2760/1260=2.19
本站网友 李大霄博客
11分钟前 发表
camera.CameraOutputCapability
本站网友 removechild
27分钟前 发表
鸿蒙next开发中如何解决相机在全屏预览的时候
本站网友 中国钢铁产业网
10分钟前 发表
number=0; if(profileArr.length < 1) { return undefined; } if(screenWidth&&screenHeight){ target=screenHeight/screenWidth //全屏幕宽高比例 } let closest = profileArr[0]; // 初始化最接近的数为数组的第一个元素 let smallestDifference = Math.abs(profileArr[0].size.width/profileArr[0].size.height - target); // 初始化最小差值为第一个元素与目标值的差值 for (let i = 1; i < profileArr.length; i++) { if(profileArr[i].size.width>=1080){ //避免小分辨率的比例算出来的数据也相临近
本站网友 aspose
20分钟前 发表
只计算分辨率大于1080的 let currentDifference = Math.abs(profileArr[i].size.width/profileArr[i].size.height - target); if (currentDifference <= smallestDifference) { smallestDifference = currentDifference; closest = profileArr[i]; } } } return closest; //返回全屏时候最佳的分辨率
本站网友 肠镜检查
2分钟前 发表
设置的预览画面是全屏的尺寸:meta60 2760/1260=2.19
本站网友 友发集团
20分钟前 发表
必然会拉伸变形;所以要全屏预览还要不变形:需要先获取手机的宽高比
本站网友 通房丫头
26分钟前 发表
设置的预览画面是全屏的尺寸:meta60 2760/1260=2.19
本站网友 美克斯邦威
5分钟前 发表
string)
本站网友 shangxi
15分钟前 发表
画面会有变形和拉伸的问题? 问题描述:为啥相机在全屏预览的时候
本站网友 生姜的功效与作用
12分钟前 发表
profileType
本站网友 德清房地产
20分钟前 发表
camera.Profile|undefined { let profileArr=cameraOutputCapability.previewProfiles; //预览的分辨率 if(profileType=='PhotoProfile'){ profileArr = cameraOutputCapability.photoProfiles; //相机支持的分辨率列表 } let screenWidth=display.getDefaultDisplaySync().width let screenHeight=display.getDefaultDisplaySync().height let target
本站网友 泡脚的好处
13分钟前 发表
画面会有变形和拉伸的问题? 问题描述:为啥相机在全屏预览的时候
本站网友 恩替卡韦片
24分钟前 发表
鸿蒙next开发中如何解决相机在全屏预览的时候