2016-09-15 215 views
1

我正在开发一个应用程序,拍摄照片并将其保存在Android /数据/包/文件中。我想减少使用的存储空间,所以我想在保存照片之前调整照片大小。目前我正在调用新的intent作为额外的输出路径传递。在保存之前是否可以传递想要的大小或可能有位图?拍摄给定尺寸的照片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); 
    } 
} 

回答

2

可能也通过规模要

可以在保存前有位图?

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

您可以使用BitmapFactoryBitmapFactory.Options中设置的inSampleSize在文件被相机写入后读取文件,保存调整后的图像,然后删除全分辨率图像。或者,跳过EXTRA_OUTPUT,你会得到一个缩略图返回给你,通过调用getExtra("data")获得Intent传入onHandleIntent()

+0

我还以为保存它,调整大小,然后删除全尺寸的照片,但我希望在一些更有效的东西。如果不可能,我会这样做。谢谢 – Leonardo