Android 如何告诉默认设备摄像头应用程序不要拍摄最大的图像,而是拍摄较小的图像?
我正在使用设备摄像头,如下所示:Android 如何告诉默认设备摄像头应用程序不要拍摄最大的图像,而是拍摄较小的图像?,android,Android,我正在使用设备摄像头,如下所示: private void checkWhetherCameraIsAvailableAndTakeAPicture() { // Check wether this device is able to take pictures if (isIntentAvailable(a, MediaStore.ACTION_IMAGE_CAPTURE)) { Intent takePictureIntent = new Intent(Med
private void checkWhetherCameraIsAvailableAndTakeAPicture() {
// Check wether this device is able to take pictures
if (isIntentAvailable(a, MediaStore.ACTION_IMAGE_CAPTURE)) {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File imageFile = null;
try {
imageFile = createImageFile();
imagePath = imageFile.getAbsolutePath();
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imageFile));
takePictureIntent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, 1*1024*1024L); // Limit image to 1MB
} catch (IOException e) {
e.printStackTrace();
imageFile = null;
imagePath = null;
}
startActivityForResult(takePictureIntent, Preferences.REQUEST_CODE_TAKE_IMAGE_WITH_CAMERA);
}
}
然后相机打开,我拍摄了一张图像,得到了一个50MB的位图文件,试图使用它会导致一个巨大的OutOfMemory错误
正如您所见,我已经尝试将文件大小限制为1MB,但显然不起作用
现在,我知道如果我使用Camera.openCamera()对象,我可以在那里设置我喜欢的任何参数,但是我如何告诉设备摄像头拍摄比最大尺寸小一点的图像呢
正如您所见,我已经尝试将文件大小限制为1MB,但显然不起作用
更准确地说:
未记录用于EXTRA\u SIZE\u LIMIT
ACTION\u IMAGE\u CAPTURE
- 摄像头应用程序不必遵守任何特定的附加条款,并且有成千上万的摄像头应用程序
- 提供
并获得相机应用程序想要给你的任何东西(通常是最大分辨率,尽管这可能由用户在某些相机中配置)额外的\u输出
- 不提供
并获取相机应用程序想要给你的任何东西(理论上是缩略图大小的图像)额外的\u输出
如果将这两个库组合起来,就不必担心文件大小等问题。这太可怕了。所以我需要使用camera.openCamera()和SurfaceView来编写我自己的相机,如果我不想要成千上万像素的大图像?@J.K:欢迎你自己使用
inSampleSize
和你的BitmapFactory.Options
下载图像时对图像进行下采样。这与第三方相机应用程序无关,而是任何您无法控制的图像源(例如,从互联网下载的图像)。好吧,这就是我目前正在做的-缩小图像的尺寸/缩小图像的采样,问题是从我收到的初始位图中产生的震动很大。我会确保检查这个!