android用户头像的选取,裁剪以及上传

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值