繁体   English   中英

如何使用CameraKit拍照?

[英]How to take a Picture using CameraKit?

我一直在构建一个使用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。

是否被保存

如果“保存”是指被写入磁盘或网络,则您没有任何代码可以执行此操作。

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

如果要将图像保存到磁盘,请派生一个线程并将字节写入FileOutputStreamFileOutputStream指向该位置,您将图像存储在内部存储器外部存储器中的任何位置 您不需要解码byte[] 它已经是JPEG格式,因此您只需写字节即可。

您需要调用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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM