android使用者頭像的選取,裁剪以及上傳
阿新 • • 發佈:2019-01-08
//在清單檔案中註冊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);
}
}