Android從Camera中獲取圖片的兩種方法
方法一:
此方法會由Camera直接產生照片回傳給應用程序,但是返回的是壓縮圖片,顯示不清晰
/** 啟動Camera */
private void intentCamera(){
try {
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, 0);
} catch (ActivityNotFoundException e) {
e.printStackTrace();
}
}
/** 在onActivityResult中獲取圖片 */
private void getImgFromCamera(){
Bundle bundle = data.getExtras();
bm = (Bitmap) bundle.get("data");
if (bm != null)
bm.recycle();
bm = (Bitmap) data.getExtras().get("data");
if(bm != null){
img.setImageBitmap(bm);
}
}
方法二:
此方法所拍即所得,但是會在Sd卡上產生臨時文件
/*** 打開照相機 */
private void intentCamera(){
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
File file = new File(Environment.getExternalStorageDirectory() + "/Images");
if(!file.exists()){
file.mkdirs();
}
Uri mUri = Uri.fromFile(
new File(Environment.getExternalStorageDirectory() + "/Images/",
"cameraImg" + String.valueOf(System.currentTimeMillis()) + ".jpg"));
cameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mUri);
cameraIntent.putExtra("return-data", true);
startActivityForResult(cameraIntent, 1);
}
/*** 獲取相機返回的數據 */
private void getImgFromCamera(){
ContentResolver cr = this.getContentResolver();
try {
if(cameraBitmap != null)
cameraBitmap.recycle();// 如果不釋放的話,不斷取圖片,將會內存不夠
cameraBitmap = BitmapFactory.decodeStream(cr.openInputStream(mUri));
if(bm != null){
img.setImageBitmap(bm);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
Log.e("error", "從相機中獲取圖片失敗=====");
e.printStackTrace();
}
}
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!