//在清单文件中注册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);
}
}
android用户头像的选取,裁剪以及上传
最新推荐文章于 2024-08-09 07:18:25 发布
本文详细介绍了在Android应用中如何实现用户头像的选择,使用内置或第三方库进行图片裁剪,并将处理后的头像上传到服务器的完整流程。包括涉及到的Intent调用、图片处理技术以及上传API的使用。
摘要由CSDN通过智能技术生成