Android 從本地選取圖片或者拍照填充ImageView
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
final CharSequence[] items = { "相簿", "拍照" };
AlertDialog dlg = new AlertDialog.Builder(CardFrontActivity.this).setTitle("選擇照片").setItems(items,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
//這裡item是根據選擇的方式, 在items陣列裡面定義了兩種方式,拍照的下標為1所以就呼叫拍照方法
if(which==1){
//拍照要先存入儲存卡或者記憶體,否則讀取圖片會模糊
SimpleDateFormat sdf = new SimpleDateFormat(
"yyyyMMddhhmmss");
String nowdata = sdf.format(new Date());
String pictureName = "_IMG_" + nowdata + ".jpg";
photoPath = Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/DCIM/Camera/" + pictureName;
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(new File(photoPath)));
startActivityForResult(intent, 1);
}else{
Intent getImage = new Intent(Intent.ACTION_GET_CONTENT);
getImage.addCategory(Intent.CATEGORY_OPENABLE);
getImage.setType("image/jpeg");
startActivityForResult(getImage, 0);
}
}
}).create();
dlg.show();
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
ContentResolver contentResolver = getContentResolver();
/**
* 因為兩種方式都用到了startActivityForResult方法,這個方法執行完後都會執行onActivityResult方法,
* 所以為了區別到底選擇了那個方式獲取圖片要進行判斷,這裡的requestCode跟startActivityForResult裡面第二個引數對應
*/
if(requestCode==0){
try {
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
photoView.setImageBitmap(BitmapFactory.decodeFile(picturePath));
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}else if(requestCode==1){
try {
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inSampleSize=1;
if(myBitmap!=null)
myBitmap.recycle();
myBitmap = BitmapFactory
.decodeFile(photoPath,opts);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
myBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
photoView.setImageBitmap(myBitmap);
}
}
相關文章
- ImageView圖片填充全屏View
- iOS ImageView contentMode 圖片填充模式iOSView模式
- Android本地圖片上傳(拍照+相簿)Android地圖
- Android 拍照、選擇圖片並裁剪Android
- Android上傳圖片之呼叫系統拍照和從相簿選擇圖片Android
- 微信小程式開發之從相簿獲取圖片 使用相機拍照 本地圖片上傳微信小程式地圖
- Android用ImageView顯示本地和網上的圖片AndroidView
- Android 呼叫系統相機拍照 . 選取本地相簿Android
- Android ImageView 清空背景圖片AndroidView
- Android 拍照及相簿選取圖片功能,已適配Android6.0、7.0、8.0Android
- Android圖片底部居中的ImageViewAndroidView
- Android:ImageView圖片縮放、居中AndroidView
- 獲取本地圖片或拍照,進行頭像圖片的上傳的工具類地圖
- 仿微信圖片選取、相機拍照—PhotoPicker(已整合GalleryView)View
- 讀取本地圖片地圖
- android imageview 縮放檢視圖片AndroidView
- Android ImageView 圖片靠右,靠左處理AndroidView
- 直播平臺搭建,Android手機拍照和手機相簿選取圖片的工具Android
- Android 之 遠端圖片獲取和本地快取Android快取
- android imageview圖片居中技巧應用AndroidView
- Android拍照,相簿選擇圖片以及Android6.0許可權管理Android
- 網路爬蟲---從千圖網爬取圖片到本地爬蟲
- 獲取本地圖片/視訊地圖
- android選擇圖片或拍照圖片上傳到伺服器(包括上傳引數)Android伺服器
- Android自定義ImageView 在圖片上新增一個圖層AndroidView
- svg圖片 填充顏色SVG
- ImageView顯示網路上的圖片View
- ImageView中圖片儲存到檔案View
- Android 圓形頭像 相簿和拍照裁剪選取Android
- ImageView長圖擷取部分展示View
- iOS儲存網路圖片和讀取本地沙盒圖片iOS
- Android 從手機相簿獲取圖片 uri 路徑 從相機獲取照片Android
- [Android]Layout中ImageView中圖片的對齊顯示問題AndroidView
- ImageView的屬性android:scaleType設定最佳比例圖片顯示ViewAndroid
- imageView圖片放大縮小及旋轉View
- Android中呼叫攝像頭拍照儲存,並在相簿中選擇圖片顯示Android
- Android中顯示html標籤或者帶圖片AndroidHTML
- 專案需求討論 - WebView下拍照及圖片選擇功能WebView