Android项目开发之头像上传

Android Bmob之用户更改头像(上传图片、下载图片和更新图片) 本文包括1、如何上传图片文件到Bmob上,2、从Bmob上下载图片文件,3、更新Bmob上的图片文件。 以下是在”个人中心”界面上,实现用户更改头像的例子。 (用户在新注册的时候会默认显示一张头像图片,等到用户打开相机拍照或从相册中选择一张图片更改头像的时候会替换原来的默认头像,之后在登陆的时候会显示用户自己更改的头像) Bmob官方Android开发文档: http://doc... 阅读详情

在android项目开发中往往会又有用户头像的存在并需要提供上传头像功能,总结了一下,所需头像图片的来源有两种,一是相机CAMEAR,而是相册ALBUM,然后后台我们得到照片后可能还需要裁剪照片,选择所需部分进行裁剪,最后显示头像并上传头像,下面我们一步一步的为大家讲解。

一、调用系统相机进行拍照

/**
     * 调用系统相机拍照
     */
    private void setectedFromCamera() {
        Intent intent =  new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent,CAMERA_REQUEST_CODE);

    }

二、调用系统相册选择图片

 /**
     * 调用相册选择图片
     */
    private void setectedFromAlbum() {

        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType("image/*");
        startActivityForResult(intent,ALBUM_REQUEST_CODE);
    }

三、activity中重写回调方法onActivityResult

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(requestCode==CAMERA_REQUEST_CODE){//调用系统相机返回
            if(data==null){
                return;
            }else{
                Bundle extras = data.getExtras();
                if(extras!=null){
                    Bitmap bitamp = extras.getParcelable("data");
                    //ivavatar.setImageBitmap(bitamp);
                    Uri uri = saveBitmap(bitamp);
                    startImageZoom(uri);
                }
            }
        }else if(requestCode==ALBUM_REQUEST_CODE){//调用相册返回
            if(data==null){
                return;
            }
            Uri uri;
            uri = data.getData();
            Uri fileUri = convertUri(uri);
            startImageZoom(fileUri);
        }else if(requestCode==CROP_REQUEST_CODE){//调用图片裁剪返回
            if(data==null){
                return;
            }
            Bundle extras = data.getExtras();
            if(extras!=null){
                Bitmap bitmap = extras.getParcelable("data");
                Uri uri = saveBitmap(bitmap);
                Log.d("SysPhotoActivity", uri.getPath());

               // x.image().bind(ivavatar,uri.getPath()+"",options);
                ivavatar.setImageBitmap(bitmap);
            }
        }
    }

四、图片裁剪、uri转换,以及图片保存的重要方法

 /**
     * 图片裁剪
     * @param uri
     */
    private void startImageZoom(Uri uri){
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(uri,"image/*");
        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,CROP_REQUEST_CODE);

    }

 /**
     * uri转换(content://>>file://)
     * @param uri
     * @return
     */
    private Uri convertUri(Uri uri){


        InputStream is = null;
        try {
            is = getContentResolver().openInputStream(uri);
            Bitmap bitmap = BitmapFactory.decodeStream(is);
            is.close();
            return saveBitmap(bitmap);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 保存图片并返回uri(file://)
     * @param bitmap
     * @return
     */
    private Uri saveBitmap(Bitmap bitmap){
        File tmDir = new File(Environment.getExternalStorageDirectory()+"/kaba/avatar/");
        if(!tmDir.exists()){
            tmDir.mkdir();
        }
        File img = new File(tmDir.getAbsolutePath()+"avatar.png");

        try {
            FileOutputStream fos = new FileOutputStream(img);
            bitmap.compress(Bitmap.CompressFormat.PNG, 85, fos);
            fos.flush();
            fos.close();
            return Uri.fromFile(img);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return null;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

总结:

1、拍照拍摄图片:调用系统相机>>onActivityResult中得到返回的图片>>保存图片>>调用裁剪方法>>onActivityResult中得到返回的裁剪图片>>显示头像

2、相册选择图片:调用相册>>onActivityResult中得到返回的图片Uri(content://)>>转换Uri类型并保存图片>>调用裁剪方法>>onActivityResult中得到返回的裁剪图片>>显示头像


android头像相册/拍照选取,裁剪及上传综合案例 在android项目中,很多情况下上传头像的需求,像qq,新浪微博,微信,飞信等很多应用都有这样的功能。 之前我写过的两篇文章:andorid下从相册选取/拍照选取一张相片并剪切和android下Bitmap和base64之间的转换把他们综合起来,就可以来实现头像从相册/拍照选取,后裁剪再上传的功能 完整源码下载 这里我只贴出上传图片的方法代码,至于怎么获取到获取到图片,请看andori 阅读详情

相关推荐

安卓上传头像(拍照,相册)

首先要开启权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permissio...

一岁啊 1104

Android开发之用户头像上传

一,概述 本篇博客总结一下自己在开发过程中应用到的一些知识,在本篇博客中带领大家完成用户头像选择或者拍照上传,并对图片进行大小的压缩,和形状的控制,可以将用户选择到的图片裁剪成圆形上传。 ok,我们开始写一个小的demo,完成用户圆形头像的选取,在写即将实现的效果之前我们看一下即将要实现的效果图二,实现代码activity_main.xml<LinearLayout xmlns:android=

宿罪的博客 3万+

Unity项目Android插件开发指南

回调函数是Unity与Android原生代码交互时常用的一种机制。回调函数允许原生代码在执行特定操作后,返回控制权到Unity引擎,并触发Unity中的相关处理逻辑。定义回调函数时,需在Unity中预先定义好需要被回调的方法,然后将其传递给原生代码,原生代码通过Unity提供的API将数据或事件传递回Unity。在Unity中定义一个回调函数,通常需要使用到委托(delegate)或者接口(interface)。

weixin_42592399的博客 761

Android 拍照以及相册中选择(适配高版本)————上传头像并裁剪(一)

在项目研发中,相信大家都遇到过给用户增加头像照片的需求。 随着所及版本的不断更新,大家在开发这个功能的同时,都会遇到常见的高版本适配等情况,本篇将为大家详细讲解如何调用摄像头拍照 & 选择相册,并裁剪图片。

拉莫帅的博客 5295

安卓通讯录App完整Java工程:本地SQLite存储、实时模糊搜索、头像裁剪上传与一键拨号

这个Android通讯录应用用Java开发,所有功能都跑在本地,不依赖网络。联系人信息包括姓名、短号、学号、班级、邮箱等字段,统一存进SQLite数据库,列表页直接读取显示,增删改查操作响应及时。添加新联系人时自动检查姓名是否重复,删除前弹出确认框防止误操作。每条联系人右侧带拨号按钮,点击直接跳转系统拨号界面。首页支持模糊搜索,输入任意字符实时匹配姓名、短号等字段,结果动态刷新。头像支持从相册选取并裁剪,保存后显示在列表左侧。项目自带About页面,清楚标注版本号、开发者姓名和学号。整个工程基于Androi

prometheus5watch的博客 219

实现Android头像上传模块的完整项目教程

htmltable {th, td {th {pre {简介:在Android应用开发中,“Android-avater”通常指代用户头像上传功能。这个模块允许用户从本地或通过摄像头获取图片,并上传至服务器。本项目详细解析了实现该功能所需掌握的关键技术点,包括图片选择器、Intent交互、权限管理、图片裁剪、文件存储、网络请求、Multipart上传、进度条显示、错误处理和安全性等。通过本教程,开发者可以学习到如何构建一个用户友好且高效的图片上传应用模块。

weixin_42168902的博客 769

Android 头像上传

一、第一步权限 //上传头像 public void getShan(File image, Observer observer){ RequestBody requestFile = RequestBody.create(MediaType.parse(“multipart/form-data”), image); MultipartBody.Part filePart=MultipartBody.Part.createFormData(“image”,image.getName(),reques

qq_46290634的博客 1064

android实现修改头像和上传功能

实现图片裁剪功能,从相册选择图片或使用相机拍照裁剪并上传服务器

Android 设置头像 - 权限申请

在Android原生态开发过程中,往往会设计到用户头像的设置问题,一般来讲设置头像需要用到拍照、获取照片、存储照片、裁剪照片、显示照片等问题,本文将一步一步的进行说明讲解。 首先需要强调几点我在开发过程中遇到的问题。 权限问题,在Android6.0以后,Android的权限获取不再是通过AndroidManifest.xml文件中声明获取,为了安全行,APP获取Android的高位权限需要动态获取。系统权限默认是禁止的,需要申请。动态申请权限的说明见该文章 调用顺序问题,在开发过程中一定要注意代码的.

zyppxx的博客 1242

Android studio 实现头像上传功能

实现了从相机获取图片和相册获得图片裁剪上传到服务器

ADC噪声参数博弈论:为何24位ADC的有效分辨率可能不如16位?

本文深入探讨了ADC噪声参数的核心矛盾,揭示了24位ADC有效分辨率可能不如16位ADC的根本原因。关键在于跳出单纯比较位数的误区,转而关注输入参考噪声这一绝对指标。文章通过分析参考电压对满量程范围和噪声模型的影响,阐述了动态范围与最小可测信号之间的取舍逻辑,为工程师提供了基于系统实际需求的ADC选型与噪声评估框架。

snow3的博客 705

android点击上传头像,Android 头像上传

当我们点击头像想要进行头像上传时,我们可以给上传头像设置一个弹框效果,用来给用户提供相册选择和拍照两种选择。这时我们可以使用PopupWindow实现1. 定义图片存储位置public void saveImage(Bitmap bitmap) {String state = Environment.getExternalStorageState();if (!state.equals(Envir...

weixin_35819216的博客 627

YOLO26改进策略【Neck】| arXiv 2025 分层多头注意力HMHA 子空间拆分提多样 + 通道重排降冗余,强化目标检测精度

HMHA(Hierarchical Multi-Head Attention,分层多头注意力)旨在解决传统多头注意力(MHA)在图像恢复任务中的核心缺陷——特征冗余。传统MHA将通道均匀拆分给各个头,导致不同头学习的子空间信息相似,进而出现多头关注同一区域、忽略退化区域修复的问题,限制了模型的特征表达能力。HMHA通过“分层子空间拆分+通道重排序”策略,让每个头学习差异化、互补的上下文特征,从根源上缓解冗余,提升图像恢复任务中对复杂退化场景的特征捕捉能力。

Limiiiing的博客 211

Android项目中使用的图片选择器、头像裁剪和图片裁剪 Android 11可用

在我们开发项目的时候,经常会涉及到头像上传和裁剪,针对这一需求我综合开源项目知乎的Matisse和国外的框架ucrop,实现了图片选择拍照和图片裁剪。 先看一下效果图 实现的方法 1、图片选择器的配置部分 Matisse.from(MainActivity.this) .choose(MimeType.of(MimeType.JPEG, MimeType.PNG, MimeType.GIF))//照片视频全部显示MimeType.allOf()

铁树开花 1532

Open3D 使用RANSAC分割平面【2026最新版】

使用RANSAC从点云中分割平面,用segement_plane函数。博客长期更新,本文最新更新时间为:2026年2月28日。

点云侠的博客 37万+

uniapp - 最新微信小程序手机号一键登录功能效果,uniapp小程序实现手机号码一键登录,uniapp微信小程序端通过手机号授权完成立即登录操作(详细示例源码,新手小白一键复制开箱即用)

uniapp,微信小程序,uniapp小程序平台,uniApp手机号一键登录,uniapp小程序端手机号一键登录功能,实现微信小程序手机号一键登录,在uniapp中实现获取手机一键登录功能,uniapp手机号快捷登录,uniapp微信小程序授权登录并获取手机号,微信小程序手机号快速验证组件调用方式,uniapp小程序怎么用手机号一键登录,uniapp一键登录流程及代码,如何获取手机号一键登录到小程序,微信小程序获取本机手机号一键登录功能,新手详细教程,详细手机一键登录完整示例代码,uni-app微信unia

✅ 精选推荐文章 1万+

七牛云的简单实用(上传图片到云存储并拿到地址写入数据库)

最近项目要有修改头像的功能,图片是不能写进数据库,而只能写进图片的地址,这就要把图片传到云存储上,再返回一个地址写进数据库,下次读取数据库图片地址,加载图片。 本次项目用上了七牛云存储,就复习一下七牛云的简单用法(本次开发客户端用Android Studio开发,服务端用Eclipse开发): 1.依赖 Android Studio:compile 'com.qiniu:qiniu-andro

kuaizilanqiu的博客 5778

从零构建法律案例数据库:Python爬虫实战与法律文本挖掘全攻略

在当今数字化浪潮席卷全球的背景下,法律行业正经历着前所未有的变革。法律案例数据库作为法律大数据的重要组成部分,已经成为法律从业者、研究人员、法学院学生乃至企业法务部门的必备工具。然而,商业法律数据库如北大法宝、威科先行、LexisNexis等往往价格不菲,且数据访问受限。对于个人研究者或小型机构而言,构建一个定制化的法律案例数据库不仅能节省成本,更能根据特定研究需求灵活调整数据结构。

2201_76125261的博客 538

【未完待续】h5 和 Android & IOS交互

在开发h5项目的时候,使用到了个人中心上传头像的功能,由于使用原生的调用手机相册相机的功能 <input type="file" id='image' accept="image/*" capture='camera' name="file"> <input type="file" name="file" style="margin-top:20px;"> andro...

Hi~豆豆麻麻 439

单细胞数据分析(三):单细胞聚类分析

本文介绍了单细胞聚类分析的基本概念及其在单细胞RNA测序(scRNA-seq)数据中的应用。单细胞聚类分析通过将具有相似基因表达模式的细胞分组到不同的簇中,帮助识别细胞类型、状态和功能。文章详细展示了使用R语言中的Seurat包进行单细胞数据聚类分析的步骤,包括数据加载、降维、聚类和结果可视化。通过FindNeighbors和FindClusters函数,文章展示了如何基于降维数据进行细胞聚类,并选择合适的分辨率值。

专注生信领域 1907

【ESP32CAM+Android+OpenCV】自定义目标数据集、训练自己的OpenCV模型部署到手机APP并对ESP32CAM无线图传显示并实时检测识别目标_资料编号30

本项目实现自定义目标数据集(想检测什么就检测什么,按照本文教程自己来更换目标)、训练自己的OpenCV模型实时检测识别(pycharm工程)。手机APP(Android studio工程)部署OpenCV模型实现对ESP32CAM(arduino工程)无线WIFI图传过来的图像实时检测识别。 本文以火焰检测识别为例进行演示,通过该过程,结合本文可自定义尝试更换为其它目标的检测,例如更换为车辆、车牌、手势、人脸面部活动、人脸表情、火焰烟雾、行人、口罩、行为、水果、植物、农作物、建筑、损伤等等部署进行检测。

嵌入式阿齐Archie 3482

android开发实现头像上传功能

刚进公司领导要求做个app头像上传功能,要求从相册或者相机拍照上传头像。网上参考了一些demo,整理了一下。 效果如图: 流程其实挺简单:对按钮进行监听,点击后弹出AlertDialog,对AlertDialog的中的三个View进行分别监听,点击相册则动态获取权限然后startActivityForResult启动相册,并重写onActivityResult方法用于回调接收...

一个程序员-二白的博客 1万+

AMBA-CHI协议详解(二)

读事务,写事务,原子事务,Stash事务,Dataless事务,DVM事务,Retry事务。

Crazzy_M的博客 6652

Android 开发 上传用户头像到服务器的数据库再获取显示

Android上传用户头像到服务器的MySql数据库,再读取并显示。

IT人的日常 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

android开发之用户头像上传

版权声明:本文为博主原创文章,欢迎大家转载,转载请标明本文出自 目录(?)[+] 一概述 ok我们开始写一个小的demo完成用户圆形头像的选取在写即将实现的效果之前我们看一下即将要实现的效果图 二实现代码 activity_mainxmlMainActivityjavaok大功告成最后别忘了在清单文件中添加读写sd可权限不然得不到imagePath关于上面的隐示int

阳光灿烂的日子的博客 1673

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Android项目开发:用户头像更换

简介 APP用户更改头像是较为常用的功能,有如下步骤: 点击修改头像按钮,弹出选择使用相机或者相册菜单; 通过相机或者相册选择合适的头像后进入裁剪界面; 将裁剪完成后的头像显示以及保存本地; 将头像上传服务器。 代码实现 1.首先需要获取相机的权限和外部存储的读写权限 ...

weixin_42046829的博客 1214

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: android中信息列表的下拉刷新和下拉加载
下一篇: Freeline的使用
program008
博客等级 码龄11年 5粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值