拍摄给定尺寸的照片 Android

Take photo of given size Android

我正在开发一个拍摄照片并将其保存在 Android/data/package/files 中的应用程序。我想减少使用的存储空间,所以我想在保存照片之前调整照片大小。目前,我称新意图作为额外的输出路径传递。是否也可以传递所需的大小,或者可以在保存之前拥有位图?

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 而崩溃,因为您很可能没有足够的堆 space 来保存全分辨率照片。

您可以使用 BitmapFactoryBitmapFactory.Options 中设置的 inSampleSize 来读入相机写入的文件,将调整后的图像保存为您认为合适的尺寸,然后删除全分辨率图像。或者,跳过 EXTRA_OUTPUT,您将获得返回给您的缩略图,这是通过在传递给 onHandleIntent()Intent 上调用 getExtra("data") 获得的。