Android 拍照、從相冊獲取及裁剪的相關實現

首先這些功能都是通過Intent去啟動系統的服務去實現的,所以自然就有相應的Action。相關Actiong如下:

1. 拍照——MediaStore.ACTION_IMAGE_CAPTURE ("android.media.action.IMAGE_CAPTURE")

2. 相冊——Intent.ACTION_GET_CONTENT("android.intent.action.GET_CONTENT" 同時要設置,intent.setType("image/*");)

3. 裁剪——"com.android.camera.action.CROP"(需要設置圖片來源 intent.setDataAndType(uri, "image/*"); )

而下面表格中的參數則是在發送Intent時,添加一些額外的數據約束實現以下額外的功能。

附加選項 數據類型 描述
crop String 發送裁剪信號 intent.putExtra("crop", "true");
aspectX int X方向上的比例 intent.putExtra("aspectX", 1);
aspectY int Y方向上的比例 intent.putExtra("aspectY", 1);
outputX int 裁剪區的寬 intent.putExtra("outputX", 240);
outputY int 裁剪區的高 intent.putExtra("outputX", 320);
scale boolean 是否保留比例 intent.putExtra("scale", true);
return-data boolean 是否將數據保留在Bitmap中返回 intent.putExtra("return-data", true);
data Parcelable 相應的Bitmap數據 intent.putExtra("data", imgaeUri);
circleCrop boolean 圓形裁剪區域 intent.putExtra("circleCrop", true);
MediaStore.EXTRA_OUTPUT ("output") Uri 將URI指向相應的file:///... intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
outputFormat String 輸出格式 intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
noFaceDetection boolean 是否取消人臉識別功能 intent.putExtra("noFaceDetection", true);

又因為這些操作都是需要結果返回的,所以都是使用startActivityForResult來進行Intent的發送,然后在本Activity進行接收處理。

特別說明:搬運自博主 長風無及,原地址點這里.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容