头像上传为最常见的功能之一,流程包括拍照/打开相册 裁剪 上传 下边介绍头像上传的整个流程。 CSDN该节视频连接 http://edu.csdn.net/course/detail/2741/53099
拍照 打开系统照相机//定义图片存储的位置file = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis() + ".png"); // 隐式意图打开系统界面 --要求回传 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // 存到什么位置 intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); startActivityForResult(intent, OPEN_CAMERA);打开相册 // 打开相册 Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*"); startActivityForResult(intent, OPEN_GALLERY);裁剪// 手机自带裁剪功能--调用系统裁剪的意图 public void crop(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", 250); intent.putExtra("outputY", 250); // 设置图片格式 intent.putExtra("outputFormat", "JPEG"); //是否返回数据 intent.putExtra("return-data", true); startActivityForResult(intent, CROP); }拍照和打开相册之后,进行裁剪,裁剪之后,使用框架进行上传@Override PRotected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == OPEN_CAMERA) { // 图片怎么取出// imageView.setImageURI(Uri.fromFile(file)); crop(Uri.fromFile(file)); } else if (requestCode == OPEN_GALLERY) { // 相册应用通过putData设置的图片的uri,所以我们这样拿 Uri uri = data.getData();// imageView.setImageURI(uri); crop(uri); } else if(requestCode==CROP){ //直接拿到一张图片 Bitmap bitmap = data.getParcelableExtra("data"); // 直接拿到一张图片 final Bitmap bitmap = data.getParcelableExtra("data"); File picFile = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis() + ".png"); // 把bitmap放置到文件中 // format 格式 // quality 质量 try { bitmap.compress(CompressFormat.PNG, 100, new FileOutputStream( picFile)); } catch (FileNotFoundException e) { e.printStackTrace(); } // 上传服务器 HttpUtils httpUtils = new HttpUtils(); // 必须post get 1k // 请求方式 请求地址 请求参数 回调 RequestParams params = new RequestParams(); params.addBodyParameter("files", picFile); httpUtils .send(HttpMethod.POST, "http://169.254.161.66:8080/imageupload/servlet/UploadServlet", params, new RequestCallBack<String>() { @Override public void onFailure(HttpException arg0, String arg1) { Toast.makeText(MainActivity.this, "上传失败", 0) .show(); } @Override public void onSuccess(ResponseInfo<String> arg0) { Toast.makeText(MainActivity.this, "上传成功", 0) .show(); imageView.setImageBitmap(bitmap); } }); } }以上是头像上传的所有逻辑新闻热点
疑难解答