android 画中画camera,Camera 连拍,画中画

学习Camera 好久了一直都想发个博客什么的 到底 还是没那种思想,今天写了一点东西 故发出来 ,其实有很多问题,但是基本上可以使用了,所以发到这里 ,记录一下。

1: 连拍 其实 没有真正的实现连拍,所谓的没有真正实现,其实根本没有快门事件发生,如果想要快门其实可以用soundPool 在假拍照的时候播放声音,关于这一点我没有实现。

2,:所谓的画中画,其实就是将预览的图片处理一下然后传到一个自己定义的surfaceview中画出来。

贴一下主要代码

class JpegPreviewCallback implements PreviewCallback {

@Override

public void onPreviewFrame(byte[] data, Camera camera) {

//Toast.makeText(getApplicationContext(), "take", 0).show();

final byte[] yuvdata = data;

if(mSVDrawtime == 1){

mSvDraw.drawPicture(data,mCamera.getParameters().getPreviewSize());

}else{

mSVDrawtime = (mSVDrawtime+1)%3;

}

// Thread save = new Thread(new Runnable() {

// @Override

// public void run() {

// Log.v(TAG,"save jpeg size"+yuvdata.length);

// fileName = System.currentTimeMillis() + ".jpeg";

// boolean mIsSave = Storage.savePicture(yuvdata, fileName,

// mCamera.getParameters().getPreviewSize(),

// pictureOrientation);

// if(!mIsSave){

// Log.v(TAG,"save fail");

// }

// }

// });

// save.start();

// mCamera.setPreviewCallback(null);

}

}

那个mSvDraw.drawPicture 是实现画中画的

下面的那个Thread 是用于存储的

里面的Storage.savePicture 主要负责存储 YUV 数据变为JPG 图片

该函数主要完成 画中画中 将YUV 转换为canvas 然后post 显示出来  代码很幼稚 只是记录一下学习过程

public void drawPicture(byte[] data,Size previewSize){

mWidth = getWidth();

mHeight = getHeight();

Canvas canvas = mSurfaceHolder.lockCanvas();

//canvas.

canvas.drawColor(Color.TRANSPARENT);

ByteArrayOutputStream out = new ByteArrayOutputStream();

YuvImage yuvImage = new YuvImage(data, ImageFormat.NV21, previewSize.width,previewSize.height, null);

yuvImage.compressToJpeg(new Rect(0, 0, previewSize.width, previewSize.height), 50, out);

byte[] imageBytes = out.toByteArray();

Bitmap image = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);

Matrix matrix=new Matrix();

matrix.postScale(0.2f, 0.2f);

matrix.postRotate(90);

Bitmap dstbmp=Bitmap.createBitmap(image,0,0,image.getWidth(),

image.getHeight(),matrix,true);

canvas.drawBitmap(dstbmp, 10, 10, null);

mSurfaceHolder.unlockCanvasAndPost(canvas);

}

下载地址:

http://download.csdn.net/detail/shen332401890/5169693

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值