Android:BitmapFactory.decodeFile / OpenCV 确实返回无效位图

发布于 2024-12-29 22:06:51 字数 611 浏览 2 评论 0原文

我正在用相机活动拍照,然后尝试从保存的位置读取它。不幸的是,返回的位图的

Bitmap bimage = BitmapFactory.decodeFile( path );

高度和宽度= -1。 我正在使用 OpenCV,当我读取图像时,

Mat img = Highgui.imread(path);

我得到了一个正确的矩阵。虽然我无法将其转换为位图。当这样做时,

bmp = Bitmap.createBitmap(img.cols(), img.rows(), Config.ARGB_8888);
Utils.matToBitmap(img, bmp);

我再次得到相同的结果:宽度和高度 = -1 的位图。我需要注意图像格式吗?我可以在相机意图上设置它吗?不应该

BitmapFactory.decodeFile( path );

自动识别格式是什么吗?

我在运行 Android 2.3.1 和 OpenCV 2.3.1 的 Samsung Galaxy S 上运行此程序,

感谢您的帮助。

I'm taking a picture with the camera activity and then try to read it from the saved location. Unfortunately the Bitmap returnd by:

Bitmap bimage = BitmapFactory.decodeFile( path );

has height and width = -1.
I'm using OpenCV and when I read the image with

Mat img = Highgui.imread(path);

I get a proper matrix. Altough I cannot convert it to a bitmap. When doing

bmp = Bitmap.createBitmap(img.cols(), img.rows(), Config.ARGB_8888);
Utils.matToBitmap(img, bmp);

I get the same result again: A Bitmap with width and height = -1. Do I need to watch out for the image format? Can I set that on the camera intent? Shouldn't

BitmapFactory.decodeFile( path );

automatically realize what the format is?

I'm running this on a Samsung galaxy S with Android 2.3.1 and OpenCV 2.3.1

Thanks for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情域 2025-01-05 22:06:51

三星的相机意图存在一些问题 照片拍摄意图仅在三星手机上导致 NullPointerException

尝试这种方式

调用相机//

String _path = Environment.getExternalStorageDirectory()
                    + File.separator + "TakenFromCamera.png";
            File file = new File(_path);
            Uri outputFileUri = Uri.fromFile(file);
            Intent intent = new Intent(
                    android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
            startActivityForResult(intent, 1212);

//在 Activity onResult 中

if (requestCode == 1212) {
            String _path = Environment.getExternalStorageDirectory()
                    + File.separator + "TakenFromCamera.png";
            mBitmap = BitmapFactory.decodeFile(_path);
            if (mBitmap == null) {
            } else {
                Intent intent = new Intent(AYGCamActivity.this,
                        myGalleryImage.class);

                startActivity(intent);
            }

        }

Samsung has some issues with camera intent Photo capture Intent causes NullPointerException on Samsung phones only

Try this way

// to call camera

String _path = Environment.getExternalStorageDirectory()
                    + File.separator + "TakenFromCamera.png";
            File file = new File(_path);
            Uri outputFileUri = Uri.fromFile(file);
            Intent intent = new Intent(
                    android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
            startActivityForResult(intent, 1212);

// in activity onResult

if (requestCode == 1212) {
            String _path = Environment.getExternalStorageDirectory()
                    + File.separator + "TakenFromCamera.png";
            mBitmap = BitmapFactory.decodeFile(_path);
            if (mBitmap == null) {
            } else {
                Intent intent = new Intent(AYGCamActivity.this,
                        myGalleryImage.class);

                startActivity(intent);
            }

        }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文