Android拍照或图库选择照片上传(附服务器端代码)
来源:互联网 发布:linux下docker安装部署 编辑:程序博客网 时间:2024/05/16 08:42
这个是大部分的app都有的功能,之前是用的同事的工具类,没自己写过,今天正好有空,就写在博客中方便以后查看
需要用到的系统权限,1是摄像头权限 2读写sd卡的权限3.网络权限
<uses-permission android:name="android.permission.CAMERA"></uses-permission> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
打开摄像头
Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(camera, XIANGJI);
Override一下onActivityResult
protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); }
思路就是通过Bundle返回的bitmap,把bitmap写入到sd卡里面,返回一个sd卡的路径
/** * 根据Bundle获取图片在sd卡的路径 * @param bundle * @return */ private String getCameraImage(Bundle bundle) { String strState = Environment.getExternalStorageState(); if (!strState.equals(Environment.MEDIA_MOUNTED)) { Log.i("TAG", "SD卡不存在"); } String fileName = "chenxin.jpg"; //此处可以改为时间 // Bundle bundle = data.getExtras(); Bitmap bitmap = (Bitmap) bundle.get("data"); File file = new File("/sdcard/tu/"); if (!file.exists()) { file.mkdirs(); } fileName = "/sdcard/tu/" + fileName; FileOutputStream stream = null; try { stream = new FileOutputStream(fileName); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { try { if (stream != null) { stream.flush(); stream.close(); } } catch (IOException e) { e.printStackTrace(); } } return fileName; }
调用系统图库
Intent picture = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(picture, TUKU);**把Bundle的getdata返回的URI转换成file的那种URi**```
/** * 获取系统图库图片的SD卡路径 * * @param data * @return */private String getPhoneImage(String uriString) { Uri selectedImage = Uri.parse(uriString); String[] filePathColumns = {MediaStore.Images.Media.DATA}; Cursor cursor = this.getContentResolver().query(selectedImage, filePathColumns, null, null, null); cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumns[0]); String fileName = cursor.getString(columnIndex); cursor.close(); return fileName;}
**然后使用Xutils的post上传图片到服务器**
//使用Xutils上传图
HttpUtils httpUtils = new HttpUtils(); RequestParams params = new RequestParams(); params.addBodyParameter("File",new File(filePath)); httpUtils.send(HttpRequest.HttpMethod.POST,"http://192.168.0.109:5421/api/upload/Uploadimg", params, new RequestCallBack<String>() { @Override public void onSuccess(ResponseInfo<String> responseInfo) { Log.e("返回值",responseInfo.result); } @Override public void onFailure(HttpException e, String s) { Log.e("失败:",e.getMessage()); } });
服务器使用的是ASP.Net MVC webapi
public class UploadController : ApiController { public string Uploadimg() { HttpPostedFile file = HttpContext.Current.Request.Files[0]; string strPath = @"D:\WWW\test2.png"; //此处路径可以自由配置 file.SaveAs(strPath); string result = "成功"; return result; } }
Demo下载
0 0
- Android拍照或图库选择照片上传(附服务器端代码)
- Android 拍照,从图库选择照片,并裁剪,上传到服务器
- Android拍照或相册获取照片上传
- Android拍照或从图库选择图片并裁剪
- Android拍照或从图库选择图片并裁剪
- Android实现仿微信朋友圈发布动态(拍照、图库选择、照片压缩、显示、保存、缩略图、点击缩略图删除对应文件等)附源码
- android 拍照,图库,相册,上传
- android 拍照上传照片
- android 拍照上传照片
- android 拍照上传照片
- android 拍照上传照片
- android 拍照上传照片
- android 拍照上传照片
- android 拍照上传照片
- android 拍照上传照片
- android 拍照上传照片
- 选择照片、拍照裁剪上传
- Android拍照 图库照片本地显示
- 下拉框中文字左右滚动效果
- tomcat多域名配置
- 输出之字形结构
- android train之管理system bar
- 高性能javascript总结
- Android拍照或图库选择照片上传(附服务器端代码)
- mapreduce里的shuffle 里的 sort merge 和combine
- SpringMVC中自定义参数解析器及内置类型的绑定
- CodeForces 598D Igor In the Museum 暴力
- Paint 介绍
- Thread类和Runable接口
- char *ptr=&character; cout<<ptr<<endl;为何乱码
- Linux制作补丁与打补丁简单用法
- opendir函数和readdir函数内涵及用法