Android從Camera中獲取圖片的兩種方法
方法一:
此方法會由Camera直接產生照片回傳給應用程序,但是返回的是壓縮圖片,顯示不清晰
try {
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_WITH_DATA);
} catch (ActivityNotFoundException e) {
e.printStackTrace();
}
Bundle bundle = data.getExtras();
bmp_selectedPhoto = (Bitmap) bundle.get("data");
if (bmp_selectedPhoto != null)
bmp_selectedPhoto.recycle();
bmp_selectedPhoto = (Bitmap) data.getExtras().get("data");
// int scale = ImageThumbnail.reckonThumbnail(bitMap.getWidth(),
// bitMap.getHeight(), 500, 600);
// bitMap = ImageThumbnail.PicZoom(bitMap,
// (int) (bitMap.getWidth() / scale),
// (int) (bitMap.getHeight() / scale));
// bitMap = ThumbnailUtils.extractThumbnail(bitMap, 200, 200);
if(bmp_selectedPhoto != null){
home_view.setBackground(new BitmapDrawable(getResources(),
bmp_selectedPhoto));
}方法二:
此方法所拍即所得,但是會在Sd卡上產生臨時文件
Intent cameraIntent = new Intent(
android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
File appDir = new File(Environment.getExternalStorageDirectory()
+ "/KengDieA");
if (!appDir.exists()) {
appDir.mkdir();
}
mUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory()
+ "/KengDieA/", "kengDiePic"
+ String.valueOf(System.currentTimeMillis()) + ".jpg"));
cameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mUri);
try {
cameraIntent.putExtra("return-data", true);
startActivityForResult(cameraIntent, CAMERA_WITH_DATA);
} catch (Exception e) {
e.printStackTrace();
}ContentResolver cr = this.getContentResolver();
try {
if (bmp_selectedPhoto != null)// 如果不釋放的話,不斷取圖片,將會內存不夠
bmp_selectedPhoto.recycle();
bmp_selectedPhoto = BitmapFactory.decodeStream(cr
.openInputStream(mUri));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
home_view.setBackground(new BitmapDrawable(getResources(),
bmp_selectedPhoto));
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!