如何使用解码位图?



我在我的应用程序中使用了一个名为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();
}

最新更新