android自定义相机添加自定义水印
2014-06-19 16:11
351 查看
最近做了一个自定义的相机,拍照后自动添加自定义水印图片,并且在预览窗口的右下角显示出来。下面总结一下自定义相机的步骤
一、继承SurfaceHolder.Callback回调接口,实现重载的三个方法,初始化摄像头和预览框:
二、创建Camera.AutoFocusCallback对象,实现调用mCamera.autoFocus(this.mAutoFocusCallback)这个方法时就能够自动拍照:
三、创建onAutoFocus方法中所需的三个对象,获取图片数据:
四、在PictureCallback对象中的重载方法中获取图像数据,在这里就能够对图像进行一系列操作,如:压缩,加水印等等,然后再初始化摄像头。
设置拍照按钮,在onclick方法中调用autoFocus方法:
这样一个自定义的相机就完成了,能够实现水印,压缩等功能。项目代码链接:自定义水印相机
一、继承SurfaceHolder.Callback回调接口,实现重载的三个方法,初始化摄像头和预览框:
@Override public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) { initCamera(); } @Override public void surfaceCreated(SurfaceHolder paramSurfaceHolder) { try{ this.mCamera = Camera.open(); //this.mCamera.setDisplayOrientation(90); //在顺时针方向的基础上获取旋转角度 int degrees = getDisplayOritation(getDispalyRotation(), getDefaultCameraId()); mCamera.setDisplayOrientation(degrees);//设置相机预览的旋转角度 this.mCamera.setPreviewDisplay(paramSurfaceHolder);//设置预览所要用的surfaces对象 return; }catch (IOException localIOException){ this.mCamera.release(); this.mCamera = null; } } @Override public void surfaceDestroyed(SurfaceHolder arg0) { stopCamera(); if (this.mCamera != null) { this.mCamera.release(); this.mCamera = null; } }
二、创建Camera.AutoFocusCallback对象,实现调用mCamera.autoFocus(this.mAutoFocusCallback)这个方法时就能够自动拍照:
private Camera.AutoFocusCallback mAutoFocusCallback = new Camera.AutoFocusCallback(){ public void onAutoFocus(boolean paramBoolean, Camera paramCamera){ MainActivity.this.mCamera.takePicture(MainActivity.this.shutterCallback, MainActivity.this.rawCallback, MainActivity.this.jpegCallback); } };
三、创建onAutoFocus方法中所需的三个对象,获取图片数据:
private Camera.ShutterCallback shutterCallback = new Camera.ShutterCallback(){ public void onShutter(){} }; private Camera.PictureCallback rawCallback = new Camera.PictureCallback(){ public void onPictureTaken(byte[] paramArrayOfByte, Camera paramCamera){} }; private Camera.PictureCallback jpegCallback = new Camera.PictureCallback(){ public void onPictureTaken(byte[] paramArrayOfByte, Camera paramCamera){ File pictureFile = MainActivity.this.getOutputMediaFile(); savePicture(pictureFile, paramArrayOfByte); initCamera(); } };
四、在PictureCallback对象中的重载方法中获取图像数据,在这里就能够对图像进行一系列操作,如:压缩,加水印等等,然后再初始化摄像头。
设置拍照按钮,在onclick方法中调用autoFocus方法:
private void takePicture(){ if (this.mCamera != null){ this.mCamera.autoFocus(this.mAutoFocusCallback); } }
这样一个自定义的相机就完成了,能够实现水印,压缩等功能。项目代码链接:自定义水印相机
相关文章推荐
- android实现自定义相机以及图片的水印
- 基于SurfaceView封装相机,并添加自定义水印效果
- android 自定义View ----- 类似黄油相机添加文字
- android之利用surfaceView实现自定义水印相机
- Android调用相机拍照并添加水印
- android自定义相机添加蒙板,拍照剪切
- android 4.0.1 webkit 添加自定义事件接口发送自定义Event
- android拍照压缩及添加水印3
- 说说Android 两种为自定义组件添加属性的使用方法和区别
- 说说Android 两种为自定义组件添加属性的使用方法和区别
- 说说Android 两种为自定义组件添加属性的使用方法和区别
- android自定义listview,添加监听器,解决屏幕滑动组件状态干扰的问题checkbox ...
- S5PV210 Android2.3 添加自定义按键:作唤醒功能
- Android 两种为自定义组件添加属性的使用方法和区别
- Android应用程序添加自定义的property属性
- android 如何给图片添加水印
- Android 自定义View并添加属性
- android 添加新的键值,自定义按键
- 说说Android 两种为自定义组件添加属性的使用方法和区别
- Android4.01/4.03 添加自定义 product 一例