我正在制作一个Android应用程序,它使用内置的一个作为意图使用相机。我正在逐像素地对照片进行一些分析。我的野火在普通照片中返回79000像素,这使得分析有点慢。
使用意图时,有没有办法设置相机或图像的质量/分辨率?我已经浏览了谷歌和api,并没有想出太多。任何人都知道这是否可能或知道其他一些降低图像分辨率的方法?
任何帮助非常感谢。
答案 0 :(得分:3)
为什么使用内置的Appliction虽然是意图而不是你自己用API编写的应用程序?我以这种方式使用相机时遇到了各种问题;毕竟,如果你想要完全控制,你不应该使用意图。有许多工作示例可以通过API拍照。
因此,当通过API使用相机时,您可以使用Camera类的setParameters方法将CameraParameters对象传递给相机对象并更改各种参数。
CameraParameters类包含一个setPictureSize(int,int)方法,可用于更改图片的大小。您可以使用CameraParameters的getSupportedPictureSizes()方法找出您的设备支持的图片大小,并使用适合您的图片大小。
List<Size> sizes = mCamera.getParameters().getSupportedPictureSizes();
for (Size size : sizes) {
// Do something, e.g. :
menu.add(0, 1, 1, size.width + "x" + size.height);
}
另外,我发现您可以将图片的格式设置为NV21。这是一种原始格式,您可以自己轻松地对返回图像的像素进行子采样(将每个像素作为每4像素的平均值,这样您就可以将图像宽度和高度减少两倍)!