Android自定义人形框相机,android自定义相机添加自定义水印

最近做了一个自定义的相机,拍照后自动添加自定义水印图片,并且在预览窗口的右下角显示出来。下面总结一下自定义相机的步骤

一、继承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);

}

}

这样一个自定义的相机就完成了,能够实现水印,压缩等功能。项目代码链接:自定义水印相机

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值