/**     * 裁剪     *     * @param     */    protected void cropPic(File file) {        if (!file.exists()) {            Toast.makeText(this, "图片不存在", Toast.LENGTH_LONG).show();            return;        }        Intent intent = new Intent();        intent.setAction("com.android.camera.action.CROP");        intent.setDataAndType(Uri.fromFile(file), "image/*");// mUri是已经选择的图片Uri        intent.putExtra("crop", "true");        intent.putExtra("aspectX", 1);// 裁剪框比例        intent.putExtra("aspectY", 1);        intent.putExtra("outputX", 150);// 输出图片大小        intent.putExtra("outputY", 150);        intent.putExtra("return-data", true);        startActivityForResult(intent, REQUEST_CODE_CROP);    }    protected void cropPic(Uri uri) {//        fileList.add(new File(new URI(uri.toString())));        Intent intent = new Intent();        intent.setAction("com.android.camera.action.CROP");        intent.setDataAndType(uri, "image/*");// mUri是已经选择的图片Uri        intent.putExtra("crop", "true");        intent.putExtra("aspectX", 1);// 裁剪框比例        intent.putExtra("aspectY", 1);        intent.putExtra("outputX", 150);// 输出图片大小        intent.putExtra("outputY", 150);        intent.putExtra("return-data", true);        startActivityForResult(intent, REQUEST_CODE_CROP);    }    /**     * 从相册中获取图片     */    protected void getImageFromAlbum() {        Intent intent = new Intent(Intent.ACTION_PICK);        intent.setType("image/*");// 相片类型        startActivityForResult(intent, REQUEST_CODE_PICK_IMAGE);    }    /**     * 从相机中获取图片     */    protected void getImageFromCamera() {        String state = Environment.getExternalStorageState();        if (state.equals(Environment.MEDIA_MOUNTED)) {// 如果挂载成功。            Intent getImageByCamera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);            // 图片路径?照相后图片要存储的位置            picPath = getPicName();            // 指定输出路径//            file_image = new File(picPath);            photouri = Uri.fromFile(new File(picPath));            getImageByCamera.putExtra(MediaStore.EXTRA_OUTPUT, photouri);            getImageByCamera.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);            startActivityForResult(getImageByCamera, REQUEST_CODE_CAPTURE_CAMEIA);        } else {            Toast.makeText(this, "请确认已经插入SD卡", Toast.LENGTH_LONG).show();        }    }    // 得到图片名称    public String getPicName() {        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {            Date date = new Date();            return Environment.getExternalStorageDirectory().toString() + "/" + date.getTime() + ".png";        }        return null;    }    private boolean boolean_delete;    @Override    public void onActivityResult(final int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        // 判断请求码        switch (requestCode) {            case REQUEST_CODE_PICK_IMAGE:// 从相册中获取数据后返回                boolean_delete = false;                if (data == null) {                    Toast.makeText(this, "未选择图片", Toast.LENGTH_SHORT).show();                    return;                }                uri = data.getData();//                Log.d("TAG", "相册中返回"+uri);                // 进行裁剪                cropPic(uri);                break;            case REQUEST_CODE_CAPTURE_CAMEIA:// 从相机中获取后返回                boolean_delete = true;//                myMsgUserImage.setImageURI(photouri);                cropPic(new File(picPath));                break;            case REQUEST_CODE_CROP:// 裁剪完成后的返回                if (boolean_delete) {                    picutil.deletePic(picPath);// 裁剪完成后删除原图                }                // 拿到剪切数据                Bitmap bmap = data.getParcelableExtra("data");// 裁剪过后的bitmap                // 压缩                yasuo_bitmap = picutil.compressImage(bmap);                if (boolean_delete) {                    // 展示到了图片上//                    mainDrawerUserImage.setImageURI(photouri);                    Glide.with(this).load(photouri).transform(new GlideCircleTransform(this)).into(mainDrawerUserImage);                } else {                    mainDrawerUserImage.setImageURI(uri);//                    Glide.with(this).load(uri).transform(new GlideCircleTransform(this)).into(mainDrawerUserImage);                }                sendMultipart();                break;            case 10001:                break;            default:                break;        }    }//    }    boolean saveBitmap2file(Bitmap bmp) {        Bitmap.CompressFormat format = Bitmap.CompressFormat.JPEG;        int quality = 100;        OutputStream stream = null;        try {            yasuo_picname = getPicName();            stream = new FileOutputStream(yasuo_picname);        } catch (FileNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return bmp.compress(format, quality, stream);    }

获得图片后上传到服务器


 /**     * 上传文件及参数     */    private void sendMultipart() {        File sdcache = getExternalCacheDir();        int cacheSize = 1 * 1024 * 1024;        //设置超时时间及缓存        OkHttpClient.Builder builder = new OkHttpClient.Builder()                .connectTimeout(15, TimeUnit.SECONDS)                .writeTimeout(20, TimeUnit.SECONDS)                .readTimeout(20, TimeUnit.SECONDS)                .cache(new Cache(sdcache.getAbsoluteFile(), cacheSize));        OkHttpClient mOkHttpClient = builder.build();        MultipartBody.Builder mbody = new MultipartBody.Builder().setType(MultipartBody.FORM);        final String user_id = (String) SpUtil.get(this, "user_id", "");        if (user_id.length() < 1) {            Toast.makeText(this, "无用户登录,无法提交到服务器", Toast.LENGTH_SHORT).show();            return;        }        mbody.addFormDataPart("user_id", user_id);        int i = 0;        saveBitmap2file(yasuo_bitmap);        if (boolean_delete) {            mbody.addFormDataPart("avatar[]", picPath, RequestBody.create(media_type_png, new File(yasuo_picname)));        } else {            String[] imgs = {MediaStore.Images.Media.DATA};//将图片URI转换成存储路径            Cursor cursor = this.managedQuery(uri, imgs, null, null, null);            int index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);            cursor.moveToFirst();            String img_url = cursor.getString(index);            mbody.addFormDataPart("avatar[]", img_url, RequestBody.create(media_type_png, new File(yasuo_picname)));        }        RequestBody requestBody = mbody.build();        Request request = new Request.Builder()                .url("自己的url")//url                .post(requestBody)                .build();//        dialog_net.show();        mOkHttpClient.newCall(request).enqueue(new Callback() {            @Override            public void onFailure(Call call, IOException e) {                Log.d("tag", e.toString());            }            @Override            public void onResponse(Call call, Response response) throws IOException {                try {                    final JSONObject obj = new JSONObject(response.body().string());
//上传成功后进行的处理                    runOnUiThread(new Runnable() {                        @Override                        public void run() {                            try {                                Toast.makeText(MainActivity.this, obj.get("msg").toString(), Toast.LENGTH_SHORT).show();                                                         } catch (JSONException e) {                                e.printStackTrace();                            }                        }                    });                } catch (JSONException e) {                    e.printStackTrace();                }            }        });    }











更多相关文章

  1. Android 获取drawable中图片的高度宽度
  2. android 从webview中读取缓存的图片
  3. Android将bitmap保存到自定义路径
  4. android 网络读取图片 带进度条
  5. android 多点触摸 实现图片缩放 Image Zoom
  6. Android应用程序之间共享文字和图片(二)
  7. android中setImageResource加载大图片出现oom解决方案
  8. Android跳转系统相机或相册获取图片
  9. android对大图片的缓存处理

随机推荐

  1. android studio 遇到的问题
  2. android 中的日历控件
  3. android 无root截屏
  4. Android(安卓)Studio 2.0 to Android(安
  5. #Android(安卓)Ticks#Mount a filesystem
  6. Android: Sensors on Android(安卓)2.3 -
  7. android下拉弹出框
  8. Android(安卓)android:persistentDrawing
  9. ch011 Android(安卓)Galley与ImageSwitch
  10. android屏幕分辨率适配