AlertDialog.Builder builder = new AlertDialog.Builder(Main2Activity.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方法,待会儿重写onActivityResult()方法,拿到图片做裁剪操作

startActivityForResult(openAlbumIntent, CHOOSE_PICTURE);

break;

case TAKE_PICTURE: // 拍照

Intent openCameraIntent = new Intent(

MediaStore.ACTION_IMAGE_CAPTURE);

tempUri = Uri.fromFile(new File(Environment

.getExternalStorageDirectory(), "temp_image.jpg"));

// 将拍照所得的相片保存到SD卡根目录

openCameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, tempUri);

startActivityForResult(openCameraIntent, TAKE_PICTURE);

break;

}

}

});

builder.show();

/** * 上传服务器 * @param mobile * @param file */ public void touimg(String mobile, File file){ Map params=new HashMap<>(); params.put("uid",mobile); 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 entry : params.entrySet()) { builder.addFormDataPart(valueOf(entry.getKey()), valueOf(entry.getValue())); } Request request=new Request.Builder().url(Api.ICONIMG_API).post(builder.build()).build(); Call call = okHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { System.out.println("=======失败了==="); } @Override public void onResponse(Call call, Response response) throws IOException { System.out.println("=======成功了==="); } }); } } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == MainActivity.RESULT_OK) { switch (requestCode) { case TAKE_PICTURE: cutImage(tempUri); // 对图片进行裁剪处理 拍照 break; case CHOOSE_PICTURE: cutImage(data.getData()); // 对图片进行裁剪处理 break; case CROP_SMALL_PICTURE: if (data != null) { try { setImageToView(data); // 让刚才选择裁剪得到的图片显示在界面上 } catch (IOException e) { e.printStackTrace(); } } break; } } } /** * 裁剪图片方法实现 */ protected void cutImage(Uri uri) { if (uri == null) { Log.i("alanjet", "The uri is not exist."); } tempUri = uri; Intent intent = new Intent("com.android.camera.action.CROP"); //com.android.camera.action.CROP这个action是用来裁剪图片用的 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); } /** * 保存裁剪之后的图片数据 */ protected void setImageToView(Intent data) throws IOException { Bundle extras = data.getExtras(); if (extras != null) { mBitmap = extras.getParcelable("data"); //这里图片是方形的,可以用一个工具类处理成圆形(很多头像都是圆形,这种工具类网上很多不再详述) System.out.println("============="+mBitmap.toString()); saveFile(mBitmap,"icon_bai.jpg");//存到本地 System.out.println("dianjial"); iv_icon.setImageBitmap(mBitmap);//显示图片 } } /** * bitmap 转换成file文件 .jpeg * @param bm * @param fileName * @throws IOException */ public void saveFile(Bitmap bm, String fileName) throws IOException { String path = getSDPath() +"/revoeyee/"; File dirFile = new File(path); if(!dirFile.exists()){ dirFile.mkdir(); } File myCaptureFile = new File(path + fileName); //bitmip 保存到本地缓存 //BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile)); FileOutputStream bos=new FileOutputStream(myCaptureFile); bm.compress(Bitmap.CompressFormat.JPEG, 80, bos); touimg(uid,myCaptureFile); /** * 上传服务器 */ // HashMap map=new HashMap<>(); // map.put("mobile",name); // post_file(Api.ICONIMG_API,map,myCaptureFile); bos.flush(); bos.close(); } /** * 获取路径 * @return */ public static String getSDPath(){ File sdDir = null; boolean sdCardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED); //判断sd卡是否存在 if (sdCardExist) { sdDir = Environment.getExternalStorageDirectory();//获取跟目录 } return sdDir.toString(); } public void btn_user_tiaozhuan(View v){ startActivity(new Intent(this,SousuoActivity.class)); }

android 上传头像工具类,Android开发中如何实现头像的更换与上传相关推荐

  1. android 字体像素转换工具类_Android开发之拼音转换工具类PinyinUtils示例

    本文实例讲述了Android开发之拼音转换工具类PinyinUtils.分享给大家供大家参考,具体如下: 1.首先下载pinyin4j-2.5.0.jar,拷贝到工程的lib目录里 或者点击此处本站下 ...

  2. android 上传头像工具类,android 圆角头像工具类

    看看相关文章, [支持圆形.圆角矩形.带边框的自定View]:https://github.com/msandroid/MultiShapeView import android.content.Co ...

  3. java中将数字颠倒的工具类,java开发中常用的数字工具类

    import java.math.BigDecimal; import org.apache.commons.lang.RandomStringUtils; public class NumberUt ...

  4. android 字体像素转换工具类_android px,dp,sp大小转换工具

    package com.voole.playerlib.util; import android.content.Context; /** * Android大小单位转换工具类 * * float s ...

  5. 操作SD卡,获取文件目录及文件工具类Android,listView

    操作SD卡,获取文件目录及文件工具类Android 1.获取文件目录及文件工具类: DirectoryInfo  FileScan 1.1 DirectoryInfo: package com.gls ...

  6. Android沉浸式状态栏工具类,一句代码轻松搞定

    Android沉浸式状态栏工具类,一句代码轻松搞定 博客原文及源码地址:http://jaeger.itscoder.com/android/2016/03/27/statusbar-util.htm ...

  7. java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题

    文章目录 先看成品 前言 一.项目目录结构 一.海报制作PosterUtil.java工具类 1. 描述 2. 代码 二.测试生成海报 1. 描述 2. 直接上代码 四.其他测试 1. Test1_C ...

  8. android播放提示音工具类(SoundConfigUtils)

    android软件提示音一般使用的是SoundPool以及MediaPlayer方式进行提示.下面是自己在开放中使用到的一个提示音工具类,可根据自己需要进行选择提示音播放方式(如有不对之处还请指教). ...

  9. android 字体像素转换工具类_Android中px与dip,sp与dip等的转换工具类

    Android中px与dip,sp与dip等的转换工具类 功能 通常在代码中设置组件或文字大小只能用px,通过这个工具类我们可以把dip(dp)或sp为单位的值转换为以px为单位的值而保证大小不变.方 ...

最新文章

  1. 音乐与现代计算机技术,计算机技术在音乐教学中应用与研究.doc
  2. Sourceforge.net速度快的镜像 [zt]
  3. php 协程 mysql_实现一个协程版mysql连接池
  4. springboot的核心
  5. Burpsuite技巧之MD5加密密码爆破、带验证码爆破
  6. tps协议和onvif协议_做监控的你,应该了解的ONVIF协议!
  7. 沉浸式ui设计_有助于沉浸的视频游戏UI —武器轮
  8. python网络编辑 socket篇
  9. UITabBarController 标签栏控制器-IOS开发 (实例)
  10. mvvm怎么让光标制定属性的文本框_Word怎么快速制作斜线表头?10秒搞定,表格颜值直线上升...
  11. elasticsearch+kibana使用中踩的坑,持续更新中。
  12. Windows Terminal v0.7 发布:支持分屏、重排选项卡和改进 UI
  13. 黑苹果系统镜像稳定版 10.9.5 - 10.15.6 整合下载
  14. visio2016无法安装的完美解决方法
  15. 菜鸟java基础--1
  16. Flash遮罩之溜光字制作一
  17. malloc函数java_malloc函数详解及用法举例
  18. 图像处理: 可见光波长(wavelength)与RGB之间的转换
  19. LabVIEW辨识颜色小游戏
  20. 桂电计算机专业2021推免人数,2021届计算机科学与技术学院推免公示

热门文章

  1. linux下批量新增数据,linux下批量插入数据到mysql
  2. linux系统中agent服务器,Zabbix添加对Linux服务器的监控(Zabbix-Agent)
  3. java 可见_Java可见性机制的原理
  4. android tablet gps antenna,A Novel Tri-band GPS/WLAN Antenna for Tablet with Full Metal Housing
  5. php网上实训指导书,PHP网站开发技术-实训指导书2016吐血制作
  6. java tcp ip通信_Java中Socket实现TCP/IP协议的通信
  7. java select 不是date,iPhonedateselect器,而不是键盘?
  8. win7上的linux环境变量,java之环境变量配置win7andlinux.docx
  9. Oracle11g新特性:在线操作功能增强-Oracle11g的只读表功能
  10. linux 脚本自动添加防火墙规则