2016-09-15 224 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