1. 程式人生 > >android使用者頭像的選取,裁剪以及上傳

android使用者頭像的選取,裁剪以及上傳

//在清單檔案中註冊activity
 <activity
            android:name=".activity.MyActivity.Agent.MyPictureActivity"
            android:screenOrientation="portrait"
            android:theme="@style/NoActionBar" />
 //style-21中設定,使activity半透明狀態
   <style name="NoActionBar" parent="Theme.AppCompat.Light.NoActionBar"
> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:colorBackgroundCacheHint">@null</item> <item name="android:windowIsTranslucent">true</item> </style> private static final int SELECT_PICTURE=1
; private static final int SELECT_CAMERA=2; private static final int SELECT_CUT=3; @OnClick({R.id.tv_xuanqu, R.id.btn_agment_undo, R.id.tv_camera}) public void onViewClicked(View view) { Intent intent = null; switch (view.getId()) { //從本地照片進行選取 case
R.id.tv_xuanqu: intent=new Intent(Intent.ACTION_PICK,null); intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*"); startActivityForResult(intent, SELECT_PICTURE); break; //取消 case R.id.btn_agment_undo: finish(); break; //拍照獲取 case R.id.tv_camera: intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, SELECT_CAMERA); break; } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { switch (requestCode) { //相機拍照 case SELECT_CAMERA: if (data != null) { Bundle bundle = data.getExtras(); if (bundle != null) { Bitmap bitmap = bundle.getParcelable("data"); File tmpDir = new File(Environment.getExternalStorageDirectory() + "/picture."); if (!tmpDir.exists()) { tmpDir.mkdir(); } File realImg = new File(tmpDir.getAbsolutePath() + "photo2.jpg"); try { FileOutputStream fos = new FileOutputStream(realImg); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); fos.flush(); fos.close(); startPhotoZoom(Uri.fromFile(realImg)); } catch (Exception e) { e.printStackTrace(); } } } break; //本地獲取圖片 case SELECT_PICTURE: if (data != null) { Uri uri = data.getData(); try { InputStream is = getContentResolver().openInputStream(uri); Bitmap bitmap = BitmapFactory.decodeStream(is); is.close(); File tmpDir = new File(Environment.getExternalStorageDirectory() + "/picture."); if (!tmpDir.exists()) { tmpDir.mkdir(); } File realImg = new File(tmpDir.getAbsolutePath() + "photo.jpg"); FileOutputStream fos = new FileOutputStream(realImg); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); fos.flush(); fos.close(); startPhotoZoom(Uri.fromFile(realImg)); } catch (Exception e) { e.printStackTrace(); } } break; case SELECT_CUT: if (data != null) { setPicToView(data); } break; } } } private void startPhotoZoom(Uri uri) { Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); intent.putExtra("crop", "true"); intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); intent.putExtra("outputX", 320); intent.putExtra("outputY", 320); intent.putExtra("return-data", true); startActivityForResult(intent, SELECT_CUT); } private void setPicToView(Intent data) { Bundle extras = data.getExtras(); if (extras != null) { Bitmap bitmap = extras.getParcelable("data"); WebService.CallWebService(bitmap, this); } }