我正在开发一个拍摄照片并将其保存在 Android/data/package/files 中的应用程序。我想减少使用的存储空间,所以我想在保存照片之前调整照片大小。目前,我称新 Intent 作为额外的输出路径传递。是否也可以传递所需的大小,或者可以在保存之前拥有位图?
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);
}
}
最佳答案
Is possible to pass also the size wanted
没有。
is possible to have the bitmap before saving it?
不是真的。您可以编写自己的 ContentProvider
并为此使用 Uri
,而不是文件。当相机应用程序尝试保存内容时,您会先在内存中获取该信息。但是,您随后会因 OutOfMemoryError
而崩溃,因为您很可能没有足够的堆空间来保存全分辨率照片。
您可以使用 BitmapFactory
并在 BitmapFactory.Options
中设置了 inSampleSize
,以便在相机写入文件后读入该文件,保存您认为合适的调整大小的图像,然后删除全分辨率图像。或者,跳过 EXTRA_OUTPUT
,您将获得返回给您的缩略图,这是通过对传递的 Intent
调用 getExtra("data")
获得的进入 onHandleIntent()
。
关于android - 拍摄给定尺寸的照片 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39516505/