Android 短视频编辑开发之相机拍照(四)

相机拍照加入滤镜效果

前言:

原理:

    拍照其实就很简单了,主要是在执行拍照动作后把摄像头回调的数据进行处理后保存到本地就可以了

实现思路:

前面的预览及美颜过程就不罗嗦了,不懂可以看前面的文章。

这里我采用两种方式实现拍照

  1. 在onDrawFrame(GL10 gl)回调方法中获取当前EGL中渲染过的图像数据(由于这里每帧都会回调,要注意性能问题)
  2. 拿到摄像头捕获的原始数据放到GLSurfaceView的渲染队列中进行OpengGL渲染后(涉及到FrameBuffer的使用),再从EGL环境下获取渲染后的图片数据进行保存

具体实现

代码实现方式一:

  @Override
    public void onDrawFrame(GL10 gl) {
        super.onDrawFrame(gl);
        if(surfaceTexture == null)
            return;
        surfaceTexture.updateTexImage();  //获取最新的数据
       
        float[] mtx = new float[16];
        surfaceTexture.getTransformMatrix(mtx);
        cameraInputFilter.setTextureTransformMatrix(mtx);
        int id = textureId;
        //进行OpenGL渲染
        if(filter == null){
            cameraInputFilter.onDrawFrame(textureId, gLCubeBuffer, gLTextureBuffer);
        }else{
            id = cameraInputFilter.onDrawToTexture(textureId);
            filter.onDrawFrame(id, gLCubeBuffer, gLTextureBuffer);
        }
      
        if(isTakePicture){
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值