自定义相机预览图片拉伸的巧妙解决方法

在开发自定义相机应用时遇到了图片预览拉伸的问题,尝试了设置相机显示方向为mCamera.setDisplayOrientation(-90)但无效。通过自我探索,提出了两种有效解决图片拉伸的方法,详细解决方案见原文。
摘要由CSDN通过智能技术生成

      在做自定义相机时,在网上找了一些demo,发现预览时候图片拉伸,网上很多解决办法是将相机设置为mCamera.setDisplayOrientation(-90);然而这个办法并没有用,我也没做深究,然后自己想了2个办法(看不明白的可以直接留言评论等方式,我很乐意为大家解答):

第一个解决办法:
          因为打开相机时候,相机时横屏的,你可以把布局弄成横屏的,然后打开相机时候强制Activity为横屏,这样就不会出现拉伸了;
第二个解决办法:
          虽然在预览时候已经做了处理,由于相机时横屏的,所以预览的图片的宽高正是显示的高宽,需要调换一下,这样处理处理的预览图才是正确的,具体看一下demo,这是我网上拿下来的自定义surfaceView的demo直接改动的;
 //相机预览界面类
    public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback {
        private SurfaceHolder mHolder;
        private Camera mCamera;

        public CameraPreview(Context context, Camera camera) {
            super(context);
            mCamera = camera;
            mHolder = getHolder();
            mHolder.setFormat(PixelFormat.OPAQUE);
            mHolder.addCallback(this);
            // deprecated setting, but required on Android versions prior to 3.0
            mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
        }
        @Override
        public void surf
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值