我正在开发一个拍摄照片并将其保存在Android /数据/包/文件中的应用程序。我想减少使用的存储空间,所以我想在保存之前调整照片大小。目前我正在调用新的意图传递作为额外的输出路径。是否可以传递所需的大小或者可以在保存之前使用位图?
public void takePicture(View view){
Intent pictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File f = new File(getPath(nameEdit.getText().toString()));
path = f.getAbsolutePath();
pictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f));
if (pictureIntent.resolveActivity(getPackageManager())!=null){
startActivityForResult(pictureIntent,REQUEST_IMAGE_CAPTURE);
}
}
答案 0 :(得分:2)
也可以传递所需的尺寸
没有
可以在保存之前获得位图吗?
不是真的。您可以编写自己的accountAction.setVendorManager(iManager);
并使用ContentProvider
,而不是文件。当相机应用程序尝试保存内容时,您将首先在内存中获取该信息。但是,您将使用Uri
崩溃,因为您没有足够的堆空间来存放全分辨率照片,很有可能。
您可以使用OutOfMemoryError
设置BitmapFactory
的{{1}}在相机写入文件后读取文件,保存已调整大小的图片,然后删除全分辨率图像。或者,跳过inSampleSize
,您将获得一个缩略图,通过调用传递到BitmapFactory.Options
的{{1}}上的EXTRA_OUTPUT
获取。