我在我的应用程序中使用了一个名为natario1/CameraView的库,因此我可以为我的片段实现相机。相机显示恰到好处。问题是,在解码所拍摄照片的位图的方法中,有这样一行代码:
cmrView.addCameraListener(new CameraListener() {
@Override
public void onPictureTaken(byte[] picture) {
super.onPictureTaken(picture);
btnfoto.setText("boas");
CameraUtils.decodeBitmap(picture);
}
});
这个CameraUtils.decodeBitmap(picture);
给了我一个错误,因为它需要另一个表达式。当我做CameraUtils.decodeBitmap(picture,);
它说" byte[]source,BitmapCallback 回调"。我是安卓的菜鸟。您能解释一下我现在需要做什么才能检索用户拍摄的照片吗?
CameraUtils.decodeBitmap(picture(;
此方法在 CameraUtils 中不再存在。
如果你想要一个位图,他们为你提供了另一种方式,比如
@Override
public void onPictureTaken(byte[] picture) {
super.onPictureTaken(picture);
CameraUtils.decodeBitmap(picture, new CameraUtils.BitmapCallback() {
@Override
public void onBitmapReady(Bitmap bitmap) {
//Here comes your bitmap
}
});
}
将此库添加到您的 Gradle 中,它将帮助您稍微清理一下代码:
implementation 'org.apache.commons:commons-io:1.3.2'
然后要保存您的图片,请执行以下操作:
Camera.PictureCallback picture = new Camera.PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
File imageFile = new File(getActivity().getExternalCacheDir(), "image.png");
try {
FileOutputStream imageFileStream = new FileOutputStream(imageFile);
IOUtils.write(data, imageFileStream);
IOUtils.closeQuietly(imageFileStream);
} catch (Exception e) {
e.printStackTrace();
}
}
};
要检索图片,请执行以下操作:
File file = new File(getExternalCacheDir().getAbsolutePath() + "/image.png");
try {
Bitmap myBitmap = BitmapFactory.decodeStream(FileUtils.openInputStream(file));
} catch (IOException e) {
e.printStackTrace();
}