如何使用CameraKit拍摄照片?

时间:2017-08-08 13:16:14

标签: java android

我一直在构建一个使用CameraKit by Flurge的项目,我有一个相当讨厌的问题。我实际上并不知道如何拍照。我有一个快门按钮,按下时应该激活一个OnPicturetaken Listener,但我不知道它是否有效,或者它是否被保存。当我单击手机上的快门按钮时,logcat会返回图片的尺寸,即13 Mp,但它并没有保存。

这是按下快门按钮时运行的代码:

cameraView.captureImage();
cameraView.setCameraListener(new CameraListener() {
    @Override
    public void onPictureTaken(byte[] picture) {
        super.onPictureTaken(picture);

        Bitmap result = BitmapFactory.decodeByteArray(picture, 0, picture.length);
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        result.compress(Bitmap.CompressFormat.JPEG, 40, stream);
    }
});

我尝试将JPEG质量设置为40以减少应用程序在处理图像时的冻结,但它根本没有帮助。我得到的唯一输出是图像全分辨率的logcat,即13Mp。

2 个答案:

答案 0 :(得分:2)

  

是否正在保存

如果通过"已保存",您的意思是写入磁盘或网络,则在您的问题中没有任何代码可以执行此操作。

  

这是按下快门按钮时运行的代码:

如果要将图像保存到磁盘,请分叉线程并将字节写入FileOutputStream,其中FileOutputStream指向您希望图像存储在{{3}的任何位置}或internal storage。您无需解码byte[];它已经是JPEG格式,因此您只需编写字节。

答案 1 :(得分:0)

您需要在侦听器下面调用captureImage();

在听众设置之前,您似乎正在捕获图像。它看起来应该是这样的。

cameraView.setCameraListener(new CameraListener() {
    @Override
    public void onPictureTaken(byte[] picture) {
        super.onPictureTaken(picture);

            Bitmap result = BitmapFactory.decodeByteArray(picture, 0,picture.length);
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            result.compress(Bitmap.CompressFormat.JPEG, 40, stream);

    }
});
cameraView.captureImage();