[英]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。
是否被保存
如果“保存”是指被写入磁盘或网络,则您没有任何代码可以执行此操作。
这是按下快门按钮时运行的代码:
如果要将图像保存到磁盘,请派生一个线程并将字节写入FileOutputStream
, FileOutputStream
指向该位置,您将图像存储在内部存储器或外部存储器中的任何位置 。 您不需要解码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.