android - 在我的 Android 相机应用程序中拍摄的图像很模糊

标签 android image bitmap camera

我开发了自己的相机应用程序,具有一些功能,相机运行良好。 问题是捕获的图像在 SD 卡上模糊,并且图像质量和尺寸在不同的手机上有所不同,即使相机像素良好且相同。 我不知道在应用程序中捕获和保存图像有什么问题。我遵循了开发者页面的指南和 github 的一些示例。

我无法为我的问题找到确切的解决方案,但一些示例实现了位图并且这些图片的质量很好。我对位图一无所知

任何解决这个问题的想法都会对我的进一步发展有所帮助。

pictureCallBack 代码

Camera.AutoFocusCallback autoFocusCallback = new Camera.AutoFocusCallback() {
    @Override
    public void onAutoFocus(boolean success, Camera camera) {
        camera.takePicture(shutterCallback, rawPictureCallBack, null, jpegPictureCallback);
    }
};

保存图片的线程

FileOutputStream outStream = null;
        /**
         * Write to SD Card
         */
        try {
            File sdCard = Environment.getExternalStorageDirectory();
            File dir = new File(sdCard.getAbsolutePath() + "/MyCamera");
            dir.mkdirs();

            String fileName = String.format("%d.png", System.currentTimeMillis());
            File outFile = new File(dir, fileName);

            outStream = new FileOutputStream(outFile);
            outStream.write(data[0]);
            outStream.flush();
            outStream.close();
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    retrieveLastImage();
                    showCustomAlert();
                }
            });
            Log.d(DEBUG_TAG, "onPictureTaken - wrote bytes: " + data.length + " to " + outFile.getAbsolutePath());
            refreshGallery(outFile);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
        }

最佳答案

这段代码看起来不错,我只是想知道,您保存文件的扩展名为 .png:通常只有 jpeg 可用...

你打过电话吗setPictureSize() ?您需要调用它,因为未指定默认大小并且可能太小 - 模糊。您需要始终调用 setPreviewSize()以及。

选择正确的尺寸很棘手。始终从 getSupportedPictureSizes() 返回的尺寸中选择一个和 getSupportedPreviewSizes() .预览大小必须与显示预览的 SurfaceView 具有相同的纵横比,否则预览将被拉伸(stretch)。根据需要选择图片大小。

我在相机方面遇到了很多麻烦。如果您严格遵守Google documentation,您将做到最好,否则相机会出现异常行为。它可能在一台设备上工作,但在另一台设备上崩溃。例如,我尝试在 Activity 的 onCreate 方法中设置大小,但这没有用。

关于android - 在我的 Android 相机应用程序中拍摄的图像很模糊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33009913/

相关文章:

android - phonegap 从 url 下载文件到 sdcard

android - Gradle Android测试

css - 随着窗口大小减小 CSS 从左侧截断图像

angular - Ionic 3- 显示 base64 图像,清理不安全的 url 值 safevalue 必须使用 [property]=binding

ios - Xcode 是否支持任何形式的 Assets 将一张图像缩放到所有 Assets 大小?

android - Google 语音识别器无法在 Android 4.x 上启动

java - 如何在android studio中比较Long类型的数据

android - 如何让路线绘制更高效?

java - 如何在android中合并位图?

C++:在另一个 Graphics* 对象内绘制 Graphics* 对象的最佳方式