Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用位图?_Java_Android - Fatal编程技术网

Java 如何使用位图?

Java 如何使用位图?,java,android,Java,Android,在我的应用程序中,我正在使用一个名为natario1/CameraView的库,这样我就可以为我的片段实现一个摄像头。这架照相机显示得正好。问题是,在解码拍摄的照片位图的方法中,有以下代码行: cmrView.addCameraListener(new CameraListener() { @Override public void onPictureTaken(byte[] picture) { super.onPictureTaken(picture);

在我的应用程序中,我正在使用一个名为natario1/CameraView的库,这样我就可以为我的片段实现一个摄像头。这架照相机显示得正好。问题是,在解码拍摄的照片位图的方法中,有以下代码行:

cmrView.addCameraListener(new CameraListener() {
   @Override
   public void onPictureTaken(byte[] picture) {
       super.onPictureTaken(picture);
       btnfoto.setText("boas");
       CameraUtils.decodeBitmap(picture);
   }
});

CameraUtils.decode位图(图片)给我一个错误,因为它需要另一个表达式。当我制作
CameraUtils.decode位图(图片,)上面写着“byte[]source,位图回调”。我是安卓系统的noob。你能解释一下我现在需要做什么,以便检索用户拍摄的照片吗?

将此库添加到你的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();
        }

摄像机。解码位图(图片)

此方法不再存在于摄影机中

如果你想要位图,他们会提供另一种方式,比如

    @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
            }
        });
    }

你能告诉我调用CameraUtils.decodeBitmap(图片)时出现了什么错误吗;要调用另一个方法,您应该添加一个回调变量。您是指日志文件吗?错误:找不到适用于decodeBitmap(字节[])方法CameraUtils的方法。decodeBitmap(字节[],BitmapCallback)不适用(实际参数列表和形式参数列表长度不同)方法CameraUtils。decodeBitmap(字节[],int,int,BitmapCallback)不适用(实际参数列表和形式参数列表长度不同)方法CameraUtils.decodeBitmap(字节[],int,int)不适用(实际参数列表和形式参数列表长度不同)是的,我想出来了,看看我的答案,所以基本上我删除了我拥有的(问题中的内容)并替换为类似的内容?是的!使用
getExternalCacheDir
将临时保存图片,以避免使用过多内存,尤其是当您有大图片时。。一般来说,保存一张图片并用它的绝对路径调用它比在活动之间传递整个图片要好。。这将有助于加快你的应用程序。。试一试,看看它是否管用。你能告诉我这是什么意思吗做什么?我的错。这是我忘记删除的代码中的一行。。我编辑了我的答案现在,当我点击我的“射击”按钮时,应用程序崩溃了,很快就把它添加到你的gradle文件compile'com.android.support:exifinterface:26.+'好吧,你真是棒极了。非常感谢!当使用它来保存图像时,它是滞后的,这是发生在你身上的吗?