android - 相机图片到位图导致图像困惑

标签 android bitmap android-camera

这是我用来将图像保存到 Bitmap 的代码。这段代码是基于 CyanogenMod 的相机应用程序的代码,所以我认为它可以正常工作但不行。关于这个问题最重要的事情是,当在 Nexus 4 上测试时,Bitmap 是为使用后置摄像头拍摄的照片正确创建的,但使用前置摄像头会导致您可以见下文。

我用来创建位图的代码:

private class XyzPictureCallback implements Camera.PictureCallback {

    @Override
    public void onPictureTaken (byte [] data, Camera camera) {
        Options options = new Options();
        options.inDither = false;
        options.inPreferredConfig = Bitmap.Config.ARGB_8888;

        Bitmap image = BitmapFactory.decodeByteArray(data, 0, data.length, options);
    }
}

我尝试使用不同的Options(但根本没有),但没有帮助。这可能与两个不同相机返回的像素格式有关,但是当我运行 getSupportedPictureFormats() 时,它们都返回了 ImageFormat.JPEG...

我的想法已经用完了......

我可能还应该提到,直接使用 FileOutputStream 保存 data 是创建正确的 JPEG 图像。所以问题一定出在 BitmapFactory 和我创建 Bitmap 的方式上。

这是这段代码生成的位图:

Broken image

编辑(2013 年 3 月 24 日):

在花了多个小时试图解决这个问题后,我仍然没有真正的解决方案。 我所发现的只是当我将图片大小时(使用 Camera.Parameters.setPictureSize(int width, int height))设置为可用的最高分辨率时才会出现问题我通过调用 Camera.Parameters.getSupportedPictureSizes() 获得的前置摄像头。

导致问题的分辨率是 1280x960。正如我之前提到的,它是最高分辨率。第二高的是 1280x720,当我使用这个时,输出图片很好。我确实检查了相机吐出的格式,它一直都是 ImageFormat.JPEG,所以我认为像素格式不是这里的问题...

编辑(08.03.2013): 打电话拍照:

private class XyzAutoFocusCallback implements Camera.AutoFocusCallback {

            @Override
            public void onAutoFocus(boolean success, Camera camera) {
                    if (takingPicture) {
                            camera.takePicture(null, null, myPictureCallback);
                    } else {
                    ...
            }

}

最佳答案

该相机不支持高度和宽度。这就是它看起来像那样以及 1280x720 设置起作用的原因。这就像您将星际争霸设置为以您的显示器不支持的分辨率运行一样。

关于android - 相机图片到位图导致图像困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15404547/

相关文章:

android - Camera2 API Android min SDK

android - org.apache.http.client.HttpResponseException : Internal Server Error while posting xml String to server

android - 上下文菜单安卓

android - 根据图片的大小改变图片的分辨率

java - 想要剪切 Canvas 圆圈的背景图像

Android camera onpreviewframe回调与旋转传感器回调同步

java - findviewbyid上的Android空指针异常

android - 如何在 TextView 中使用 Html.fromHtml() 使电话号码、链接和 url 都可以点击

c# - 第二个路径片段不能是驱动器或 UNC 名称

android - 设置 Parameters.FLASH_MODE_TORCH 在 Droid X 2.3 上不起作用