OKhttp上传图片
来源:互联网 发布:json version 编辑:程序博客网 时间:2024/05/21 15:46
private void showChooseAlterDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("设置头像"); String[] items = { "选择本地照片", "拍照" }; builder.setNegativeButton("取消", null); builder.setItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case CHOOSE_PICTURE: // 选择本地照片 Intent openAlbumIntent = new Intent( Intent.ACTION_GET_CONTENT); openAlbumIntent.setType("image/*"); startActivityForResult(openAlbumIntent, CHOOSE_PICTURE); break; case TAKE_PICTURE: // 拍照 Intent openCameraIntent = new Intent( MediaStore.ACTION_IMAGE_CAPTURE); tempUri = Uri.fromFile(new File(Environment .getExternalStorageDirectory(), "image.jpg")); // 指定照片保存路径(SD卡),image.jpg为一个临时文件,每次拍照后这个图片都会被替换 openCameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, tempUri); startActivityForResult(openCameraIntent, TAKE_PICTURE); break; } } }); builder.create().show();}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { // 如果返回码是可以用的 switch (requestCode) { case TAKE_PICTURE: startPhotoZoom(tempUri); // 开始对图片进行裁剪处理 break; case CHOOSE_PICTURE: startPhotoZoom(data.getData()); // 开始对图片进行裁剪处理 break; case CROP_SMALL_PICTURE: if (data != null) { setImageToView(data); // 让刚才选择裁剪得到的图片显示在界面上 } break; } }}/** * 裁剪图片方法实现 * * @param uri */protected void startPhotoZoom(Uri uri) { if (uri == null) { Log.i("tag", "The uri is not exist."); } tempUri = uri; Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); // 设置裁剪 intent.putExtra("crop", "true"); // aspectX aspectY 是宽高的比例 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // outputX outputY 是裁剪图片宽高 intent.putExtra("outputX", 150); intent.putExtra("outputY", 150); intent.putExtra("return-data", true); startActivityForResult(intent, CROP_SMALL_PICTURE);}/** * 保存裁剪之后的图片数据 * * @param * * @param */protected void setImageToView(Intent data) { Bundle extras = data.getExtras(); if (extras != null) { Bitmap photo = extras.getParcelable("data"); Utils utils=new Utils(); photo = utils.toRoundBitmap(photo); // 这个时候的图片已经被处理成圆形的了 iv_touxiang.setImageBitmap(photo); uploadPic(photo);//下载图片 }}private void uploadPic(Bitmap bitmap) { File file=new File("mnt/sdcard/Linkaipictures/a.jpg"); try { BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(file)); bitmap.compress(Bitmap.CompressFormat.JPEG,100,bos); bos.flush(); bos.close(); } catch (Exception e) { e.printStackTrace(); } Map<String,Object> params=new HashMap<>(); params.put("uid",uid); OkHttpClient okHttpClient=new OkHttpClient(); MultipartBody.Builder builder=new MultipartBody.Builder().setType(MultipartBody.FORM); RequestBody requestBody=RequestBody.create(MediaType.parse("image/*"),file); builder.addFormDataPart("file",file.getName(),requestBody); if(params!=null) { for (Map.Entry<String, Object> stringObjectEntry : params.entrySet()) { builder.addFormDataPart(stringObjectEntry.getKey(), (String) stringObjectEntry.getValue()); } } Request request=new Request.Builder().post(builder.build()).url(Api.relepace).build(); okHttpClient.newCall(request).enqueue(new Callback() { private String string; @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { if(response!=null&&response.isSuccessful()) { string = response.body().string(); System.out.println("=======json==="+ string); } runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(UserActivity.this, "====成功了===", Toast.LENGTH_SHORT).show(); } }); } });}
阅读全文
0 0
- Android okHttp图片上传
- 使用Okhttp上传图片
- 使用OkHttp上传图片
- Okhttp实现上传图片
- OKhttp上传图片
- Okhttp上传图片
- 使用OkHttp上传图片
- Android okhttp上传图片文件
- okhttp方法上传图片和接收图片
- android 使用OkHttp上传多张图片
- android 使用OkHttp上传多张图片
- OKHttp上传图片实现,进度监听
- android 使用OkHttp上传多张图片
- okhttp上传多张图片核心代码
- Android okhttp带参数上传单张图片
- OKHttp(三)---------post方式上传图片
- Android OkHttp 结合php 多图片上传
- 利用OKHttp实现 图片上传 ---b509小贴士
- Matlab绘制动态图的两种方式(参考)
- [LeetCode] 21. Merge Two Sorted Lists
- 设计模式——工厂方法模式
- 安装 win7和ubuntu14.04 32位 双系统时引导不成功解决!
- computer vision
- OKhttp上传图片
- okhttp的简单封装
- 微信小程序商城系统出售
- gcc 编译流程
- Android构建前台服务,以及PendingIntent返回到当前活动的解决办法
- 数据结构学习笔记(10)---基于线性表的查找
- for 循坏
- A Simple Math Problem(最小公倍数最大公约数变形应用)
- leetcode 94. Binary Tree Inorder Traversal