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);
}
}
相關文章
- iOS ImageView contentMode 圖片填充模式iOSView模式
- Android本地圖片上傳(拍照+相簿)Android地圖
- Android ImageView 清空背景圖片AndroidView
- Android圖片底部居中的ImageViewAndroidView
- Android 呼叫系統相機拍照 . 選取本地相簿Android
- Android 拍照及相簿選取圖片功能,已適配Android6.0、7.0、8.0Android
- android imageview 縮放檢視圖片AndroidView
- 直播平臺搭建,Android手機拍照和手機相簿選取圖片的工具Android
- 讀取本地圖片地圖
- 仿微信圖片選取、相機拍照—PhotoPicker(已整合GalleryView)View
- 網路爬蟲---從千圖網爬取圖片到本地爬蟲
- 獲取本地圖片/視訊地圖
- Android 圓形頭像 相簿和拍照裁剪選取Android
- Android 從手機相簿獲取圖片 uri 路徑 從相機獲取照片Android
- Android中呼叫攝像頭拍照儲存,並在相簿中選擇圖片顯示Android
- Android圖片快取框架GlideAndroid快取框架IDE
- Android儲存多張圖片到本地Android
- svg圖片 填充顏色SVG
- android7.0以上呼叫系統相機拍照並顯示到ImageView上AndroidView
- android實現拍照、相簿選圖、裁剪功能,相容7.0以及小米Android
- 專案需求討論 - WebView下拍照及圖片選擇功能WebView
- 將圖片旋轉(這裡不是旋轉imageView)View
- 使用Scrapy爬取圖片入庫,並儲存在本地
- 鴻蒙無許可權實現圖片選擇拍照和錄影片鴻蒙
- PS拍照圖片清晰化處理教程
- android 拍照Android
- 對映本地圖片地圖
- css讓圖片或者元素置灰CSS
- 為啥從SurfaceView中獲取不到圖片?View
- 微信小程式 實現網路圖片本地快取微信小程式快取
- Blazor Hybrid (Blazor混合開發)更好的讀取本地圖片Blazor地圖
- win10如何填充多張圖片 win10桌面填充多張圖片怎麼設定Win10
- Android圖片突出Android
- Android Camera——拍照Android
- 本地Markdown上傳圖片
- python 爬蟲之requests爬取頁面圖片的url,並將圖片下載到本地Python爬蟲
- Android ImageView對齊方式設定AndroidView
- 移動端檔案、圖片及拍照上傳
- Unity從圖片的位元組資料裡面獲取圖片的寬和高Unity