上传头像

原创 2015年07月09日 18:02:19

目前关于上传头像的应用用的非常频繁。比如滴滴快车,神州专车的个人信息中就有这样的需求。

对于头像的上传是相机拍照和保存相册的典型应用,为了更好的理解究竟用到了那些技术,这里一一介绍。

1:调用相机的功能;

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// 调用android自带的照相机
// photoUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
startActivityForResult(intent, 1);

2:调用相册的功能:

Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);// 调用android的图库
startActivityForResult(i, 2);

3:保存相册的功能:

String sdStatus = Environment.getExternalStorageState();
if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) {
// 检测sd是否可用
Log.v("TestFile",
"SD card is not avaiable/writeable right now.");
return;
}
Bundle bundle = data.getExtras();
Bitmap bitmap = (Bitmap) bundle.get("data");// 获取相机返回的数据,并转换为Bitmap图片格式
FileOutputStream b = null;
File file = new File("/sdcard/myImage/");
file.mkdirs();// 创建文件夹,名称为pk4fun //
// 照片的命名,目标文件夹下,以当前时间数字串为名称,即可确保每张照片名称不相同。网上流传的其他Demo这里的照片名称都写死了,则会发生无论拍照多少张,后一张总会把前一张照片覆盖。细心的同学还可以设置这个字符串,比如加上“IMG”字样等;然后就会发现sd卡中myimage这个文件夹下,会保存刚刚调用相机拍出来的照片,照片名称不会重复。
String str = null;
Date date = null;
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");// 获取当前时间,进一步转化为字符串
date = new Date(resultCode);
str = format.format(date);
String fileName = "/sdcard/myImage/" + str + ".jpg";


try {
b = new FileOutputStream(fileName);
/*
* BufferedOutputStream bos = new BufferedOutputStream( new
* FileOutputStream(file));
*/
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把数据写入文件


} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
try {
b.flush();
b.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/*
* Intent intent = new Intent(
* Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); Uri uri =
* Uri.fromFile(file); intent.setData(uri);
* sendBroadcast(intent);
*///
// sendBroadcast(fileName);


MediaScannerConnection.scanFile(getApplicationContext(),
new String[] { fileName }, null, null);


注意 这里保存相册用到了创建文件:

File file = new File("/sdcard/myImage/");
file.mkdirs();// 

将文件 写入输出流:用刀try catch

try {
b = new FileOutputStream(fileName);
/*
 * BufferedOutputStream bos = new BufferedOutputStream( new
 * FileOutputStream(file));
 */
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把数据写入文件


} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
try {
b.flush();
b.close();

} catch (IOException e) {
e.printStackTrace();
}
}

当初在这里纠结了老半天,b = new FileOutputStream(fileName);总是空,首先是作用域,以及FileOutputStream和BufferedOutputStream的使用。

用于显示:

((ImageView) findViewById(R.id.imageView)).setImageBitmap(bitmap);// 将图片显示在ImageView里


最后 是适用的权限:也害了我半天。

    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />

头像图片上传资源

  • 2017年09月22日 10:00
  • 6.65MB
  • 下载

Android 更改头像(图片)并上传服务器功能Demo详解

引言很久没更新博客了,最近忙得有点神魂颠倒,不过呢,今天回来继续更新。今天还是我们的android小demo系列,带来的是很常用的一个功能:用户从图库或者自个儿调用相机拍摄一张照片,然后用户可以对图片...
  • alanjet
  • alanjet
  • 2016年09月10日 14:56
  • 8169

flash 上传头像

  • 2013年06月26日 11:20
  • 425KB
  • 下载

头像截图上传两种方式(SWFUpload、一个简单易用的flash插件)

SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术为WEB开发者提供了一个具有丰富功能继而超越传统标签的文件上传模式。另一...

头像上传和剪切

  • 2014年07月26日 17:03
  • 1.5MB
  • 下载

jcrop上传、裁剪头像

  • 2015年05月16日 18:30
  • 107KB
  • 下载

java通过nginx+apache tomcat接收用户头像图片上传,实现网站动态和静态域名访问图片的详细教程

java通过nginx+apache tomcat接收用户头像图片上传,实现网站动态和静态域名访问图片的详细教程 闲的蛋疼,研究下网站的动静分离(好处就不说了,不清楚的请自行百度吧),分析了...

头像拍照上传

  • 2017年03月13日 23:53
  • 28.69MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:上传头像
举报原因:
原因补充:

(最多只允许输入30个字)