今天给大家讲一下如何实现图片上传功能,以上所讲呢全是经验之谈,把工作中的代码以功能的形式展示出来,即为了大家学习借鉴,也为了日后工作的方便,加深理解。
图片上传,众所周知,无非是是拍照和相册选取两种,可以用dialog,activity,popwindow等展示界面,具体大家自己去实现,本文只讲功能

调取拍照功能:

    private void camera() {try {tempImg1 = new File(MainActivity.this.getExternalCacheDir(), System.currentTimeMillis() + ".jpg");if (!tempImg1.exists()) {boolean b = tempImg1.createNewFile();if (b) {log.i(tempImg1.getAbsolutePath());Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(tempImg1));startActivityForResult(intent, 1);}}} catch (IOException e) {log.e(e);}}

调取相册功能:

private void photos() {Intent getImage = new Intent(Intent.ACTION_PICK, null);getImage.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");//这是图片类型startActivityForResult(getImage, 2);}

然后是如何在 public void onActivityResult(int requestCode, int resultCode, Intent data)里进行处理呢?

requestCode请求码,resultCode结果码,data是传递的数据

  @Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {if (resultCode == Activity.RESULT_OK) {switch (requestCode) {case 1:if (tempImg1 != null) {//调用裁剪功能或者压缩//scaleImage(Uri.fromFile(tempImg1));}break;case 2:if (data != null) {//调用裁剪功能或者压缩// scaleImage(data.getData());}break;default:break;}}}

裁剪有系统的裁剪方式,也有自定义的裁剪方式
系统裁剪:

    /*** 裁剪图片*/public void startPhotoZoom(Uri uri, int size) {Intent intent = new Intent("com.android.camera.action.CROP");intent.setDataAndType(uri, "image/*");intent.putExtra("crop", "true");// crop=true 有这句才能出来最后的裁剪页面.intent.putExtra("aspectX", 1);// 这两项为裁剪框的比例.intent.putExtra("aspectY", 1);// x:y=1:1intent.putExtra("outputX", size);//图片输出大小intent.putExtra("outputY", size);intent.putExtra("output", Uri.fromFile(tempImg));intent.putExtra("outputFormat", "jpg");// 返回格式startActivityForResult(intent, 3);}

自定裁剪很多,这里也为大家推荐github上比较流行的几款裁剪库

https://github.com/wangchang163/uCrop

https://github.com/wangchang163/cropper

https://github.com/wangchang163/android-crop

以上都是很经典的老牌crop库,大家可以作为参考!
裁剪过后自然是保存图片,进行上传啦,上传具体参考后台接口,不做介绍了,当然还有一种情况,就是不需要裁剪,只进行压缩,因为裁剪是选取局部图片,当图片太大,又不需要裁剪时,就需要进行压缩了,这里提供一个压缩方法

private void scaleImage(Uri uri) {Bitmap bitmap = null;try {bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri);int width = bitmap.getWidth();int height = bitmap.getHeight();if (width > 800 || height > 800) {if (width > height) {float scaleRate = (float) (800.0 / width);width = 800;height = (int) (height * scaleRate);Bitmap map = Bitmap.createScaledBitmap(bitmap, width, height, true);saveBitmap(map);} else {float scaleRate = (float) (800.0 / height);height = 800;width = (int) (width * scaleRate);Bitmap map = Bitmap.createScaledBitmap(bitmap, width, height, true);saveBitmap(map);}} else {saveBitmap(bitmap);}} catch (IOException e) {e.printStackTrace();}}private void saveBitmap(Bitmap map) {File file = new File(getExternalCacheDir(), System.currentTimeMillis() + ".jpg");try {BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));map.compress(Bitmap.CompressFormat.JPEG, 80, bos);bos.flush();bos.close();updateImg(file);//上传图片接口} catch (Exception e) {e.printStackTrace();}}

嗯,就这样吧,基本上可以实现此功能,仅供参考借鉴,如有帮助,请点赞,谢谢!

Android实现图片(拍照+相册)上传功能相关推荐

  1. html上传图片裁剪,基于HTML5+JS实现本地图片裁剪并上传功能

    基于HTML5+JS实现本地图片裁剪并上传功能 2019-01-07 编程之家 https://www.jb51.cc 编程之家收集整理的这篇文章主要介绍了基于HTML5+JS实现本地图片裁剪并上传功 ...

  2. php 点击选择图片上传,简易的图片点击上传功能

    这次给大家带来简易的图片点击上传功能, 做出简易的图片点击上传功能注意事项有哪些,下面就是实战案例,一起来看一下. 简易图片点击上传预览示例.chrome,火狐等浏览器 下可支持拖拽预览 //--从 ...

  3. 手机端本地图片或者拍照的上传功能

    原文连接 https://blog.csdn.net/m0_37852904/article/details/78550136 ------------------------------------ ...

  4. Android的图片压缩并上传

    Android开发中上传图片很常见,一般为了节省流量会进行压缩的操作,本篇记录一下压缩和上传的方法. 图片压缩的方法 : import java.io.ByteArrayOutputStream; i ...

  5. Android实现图片压缩并上传到服务器

    最近公司又叫开发了一个新项目,这个项目中上传图片用的蛮多的,于是整理一下,记录自己的心得体验 刚入手的时候,对于图片的大小还没有概念,(以前上传图片都是用户头像,对大小没什么要求),心想之间上传就是了 ...

  6. uniapp怎么调起摄像头拍视频_uni-app实现图片和视频上传功能

    var sourceType =[ ['camera'], ['album'], ['camera', 'album'] ] exportdefault{ data() {return{ imageL ...

  7. java上传头像插件_JSP+SpringMVC框架使用WebUploader插件实现注册时候头像图片的异步上传功能...

    一.去官网下载webuploader文件上传插件 下载好后把它放到Javaweb项目的文件夹中(我放到了webcontent下面的static里面) 二.复制前端的样式 把这段代码放到你想要放到的位置 ...

  8. php 防微信照片上传,PHP仿微信多图片预览上传功能

    [html] view plain copy 在CODE上查看代码片派生到我的代码片 plupload上传 [javascript] view plain copy 在CODE上查看代码片派生到我的代 ...

  9. quill富文本编辑器——修改默认图片、视频上传功能

    quill富文本编辑器默认的图片上传是将图片地址转换为base64格式,可能会导致字段过长:默认的视频上传是插入iframe标签,与需要的video标签不符合 图片上传 初始化编辑器时重写image上 ...

  10. php仿微信多图片预览上传,PHP仿微信多图片预览上传功能

    [html] view plain copy 在CODE上查看代码片派生到我的代码片 plupload上传 [javascript] view plain copy 在CODE上查看代码片派生到我的代 ...

最新文章

  1. 13个你一定要知道的PyTorch特性
  2. 真正的 AI 内行盛会!智源大会带你刷新“世界第一”记录!
  3. golang for循环 使用多个变量
  4. ado.net封装类
  5. [react] React16废弃了哪些生命周期?为什么?
  6. 【Python】Matplotlib绘制日期型时间序列图
  7. IT外包 OpenEIM 强调CMMI等级
  8. 计算机组成原理白中英课后习题题答案
  9. SDK环境变量配置 adb配置
  10. 计算机图形学结课论文,计算机图形学的结课论文计算机图形学课程期末论文
  11. Python自省机制
  12. CocosCreator downlevelIteration 允许迭代器进行迭代
  13. PC网站微信第三方登陆
  14. 国家VR/AR扶持政策文件一览(多文件下载)
  15. 如何能更更好的装逼 (Windows CMD命令大全)
  16. java--Timer 定时器
  17. openfoam后处理求全床平均孔隙率
  18. 计算机研究生青岛就业,2017年就业形势严峻!青岛大学毕业生怎么样?都去哪儿了?...
  19. 软件设计原则:正确做小事
  20. Easy Mock - 数据模拟神器

热门文章

  1. python3 urlencode_Python3 parse.urlencode() 与parse.unquote()
  2. 学习笔记2-面包板的使用
  3. Bug heroes虫虫英雄 超详细翻译+基本攻略
  4. uniapp微信公众号跳转小程序(vue项目)
  5. VirtualBox增强功能无法安装
  6. 【正点原子MP157连载】第四章 ATK-STM32MP157功能测试-摘自【正点原子】STM32MP157快速体验
  7. 2020-12-29 G003-186-16
  8. 微信公众号连接服务器显示404,WordPress 微信机器人自动回复显示 404 错误解决办法...
  9. java旋转图片后边上变黑_图像旋转后出现黑点 - (二) - 填坑
  10. golang 中文处理