拍摄给定尺寸的Android照片

时间:2016-09-15 16:54:41

标签: android image resize android-camera

我正在开发一个拍摄照片并将其保存在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);
    }
}

1 个答案:

答案 0 :(得分:2)

  

也可以传递所需的尺寸

没有

  

可以在保存之前获得位图吗?

不是真的。您可以编写自己的accountAction.setVendorManager(iManager); 并使用ContentProvider,而不是文件。当相机应用程序尝试保存内容时,您将首先在内存中获取该信息。但是,您将使用Uri崩溃,因为您没有足够的堆空间来存放全分辨率照片,很有可能。

您可以使用OutOfMemoryError设置BitmapFactory的{​​{1}}在相机写入文件后读取文件,保存已调整大小的图片,然后删除全分辨率图像。或者,跳过inSampleSize,您将获得一个缩略图,通过调用传递到BitmapFactory.Options的{​​{1}}上的EXTRA_OUTPUT获取。