修改日志
2016.05.12
之前的程序存在两个问题:
1)从相册选择的图片如果比较大,会失败;
2)无法拍照上传照片。
修改了这两个bug,之前的代码已经被覆盖掉了,留着太误人子弟了。同时修改了一下标题和文章的文字描述
拍照示意
相册示意
一. 整体功能描述
整理了一下主要有以下几点功能:
1)获得相册图片
2)通过拍照获得图片
3)裁剪图片
4)将图片上传至服务器
5)从服务器获得图片
二. 功能实现
1.1 获得图片
(1)通常情况下,有以下两种方式:
**从相册中选择图片
这种方式原理比较简单,就是从SDK中获得照片,转成字节再生产Bitmap对象用于显示即可。**拍照获得图片
拍照获取的图片原理就是先拍照存储,然后再读取,就和从相册中选择图片的原理一样了。
(2)实现:
关于图片的选择和处理,推荐一叶飘舟的文章。
- 首先是点击头像弹出一个dialog供选择读入图片的方式:
private CharSequence []its = {
"拍照","从相册选择"};
public static final int TAKE_PHOTO = 1;//拍照
public static final int CROP_PHOTO = 2;//裁剪
public static final int SELECT_PIC = 0;//从相册选择
private Uri imageUri; //图片路径
private String filename; //图片名称
//上传头像
headImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new AlertDialog.Builder(ModiUserInfoActivity.this)
.setTitle("更换头像")
.setItems(its, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent();
//最好自己封装一下,方便复用
switch (which)
{
case 0://拍照
//图片名称 时间命名
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
Date date = new Date(System.currentTimeMillis());
filename = format.format(date);
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
File outputImage = new File(path,filename+".jpg");
try {
if(outputImage.exists())
{
outputImage.delete();
}
outputImage.createNewFile();