我编写了一个简单的应用程序,它可以打开相机并提供用于保存任何捕获的图像的路径。
代码基本上是这样的:
File file = new File( Environment.getExternalStorage() + "myimages/",
"my_image.jpg" );
Uri outputUri = Uri.fromFile( file );
Intent intent = new
Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE );
Intent.putExtra( MediaStore.EXTRA_OUTPUT, outputUri );
这在我的 Droid 上完美运行。图像始终以 2592x1936 的分辨率保存。但是,在 Milestone 上进行测试时,图像以更小的尺寸保存,例如 320x240 和 1280 x 1900。使用 adb logcat,我可以看到图像尺寸是在拍摄照片后立即设置的。
似乎在 Milestone 上有一个默认设置导致了这种行为。
如有任何帮助,我们将不胜感激。
谢谢, ~杰里米
最佳答案
每部手机都有自己的制造商编写的相机应用程序。每个相机应用程序都会决定调整大小和/或压缩拍摄的任何图像的程度。如果您在更多手机上进行测试,您可能会发现您获得了各种不同的图像尺寸和质量。只要您使用 Intent,就取决于用户选择处理该 Intent 的任何 Activity(无论如何它总是不同于默认的相机应用程序)来决定如何处理它。
如果您想强制执行特定的图像尺寸或质量,您需要编写自己的相机 Activity 。请记住,不同的手机将具有不同的硬件,无论如何都会以各种不同的分辨率拍摄图像。您应该能够获得比 320x240 更好的分辨率,但您将无法在所有手机上获得一致的尺寸,因为硬件不同。
关于Android Image Capture 在里程碑上节省小尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3190006/