基于SurfaceView封装相机,并添加自定义水印效果

基于SurfaceView封装相机,并添加自定义水印效果

根据项目需要,android自带的相机不能满足自己需求,需要在拍完相机后能处理照片添加水印,并且照相机界面能自己定义风格,在网上找了现有代码自己加以重构(PS:可能封装的不够好),基本满足相机功能和业务逻辑分离,到达代码复用效果。

重构代码遇到3个问题这里和大家分享下:

1.自定义相机设置尺寸不对导致SurfaceView显示画面变形
2.手动点击对焦
3.水印添加美观满足用户自定义

问题一:

针对这个问题也在网上找了资料,基本解释是 由于预览图像大小跟SurfaceView 大小不一致引起

于是找了可行代码块

代码块

代码块语法遵循标准markdown代码,例如:

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
        int rotation = getDisplayOrientation();
        mCamera.setDisplayOrientation(rotation);
        Camera.Parameters parameters = mCamera.getParameters();
        parameters.setRotation(rotation);
        mCamera.setParameters(parameters);
        adjustDisplayRatio(rotation);
    }
    public int getDisplayOrientation() {

        android.hardware.Camera.CameraInfo camInfo = new android.hardware.Camera.CameraInfo();
        android.hardware.Camera.getCameraInfo(
                Camera.CameraInfo.CAMERA_FACING_BACK, camInfo);

        Display display = ((WindowManager) getContext().getSystemService(
                Context.WINDOW_SERVICE)).getDefaultDisplay();
        int rotation = display.getRotation();
        int degrees = 0;
        switch (rotation) {
        case Surface.ROTATION_0:
            degrees = 0;
            break;
        case Surface.ROTATION_90:
            degrees = 90;
            break;
        case Surface.ROTATION_18
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值