设为首页 加入收藏

TOP

从相册获取图片及调用相机拍照获取图片,最后上传图片到服务器(一)
2017-10-13 10:47:30 】 浏览:7729
Tags:相册 获取 图片 调用 相机 拍照 最后 上传 服务器
调用相机拍照获取图片:
跳转到到拍照界面:
 
Intent takeIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//下面这句指定调用相机拍照后的照片存储的路径
mSzImageFileName = Long.toString(System.currentTimeMillis()) + ".png";
takeIntent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(new File(Environment.getExternalStorageDirectory(), mSzImageFileName)));
startActivityForResult(takeIntent, REQUEST_TAKE_PHOTO);
 
从相册获取图片: 
从相册选择图片:
 
Intent pickIntent = new Intent(Intent.ACTION_PICK, null);
// 如果要限制上传到服务器的图片类型时可以直接写如:image/jpeg 、 image/png等的类型
pickIntent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
startActivityForResult(pickIntent, REQUEST_PICK_PHOTO);
 
 从相册返回一张图片或者拍照返回一张图片:
监听返回结果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case REQUEST_PICK_PHOTO: // 直接从相册获取
try {
startPhotoZoom(data.getData()); //跳转到截图界面
} catch (NullPointerException e) {
e.printStackTrace();// 用户点击取消操作
}
break;
case REQUEST_TAKE_PHOTO: // 调用相机拍照
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
File temp = new File(Environment.getExternalStorageDirectory(), mSzImageFileName);
if (temp.exists()) {
startPhotoZoom(Uri.fromFile(temp)); //跳转到截图界面
}
}
}, 1000);
break;
case REQUEST_CUT_PHOTO: // 取得裁剪后的图片
if (data != null) {
setPicToView(data); //保存和上传图片
}
break;
}
 
super.onActivityResult(requestCode, resultCode, data);
}
 
返回图片后进行裁剪:
裁剪图片:
/**
* 裁剪图片方法实现
*/
private void startPhotoZoom(Uri uri) {
LogUtil.e("PersonalInformationActivity", "onActivityResult uri" + uri);
if (uri != null) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image/*");
// 下面这个crop=true是设置在开启的Intent中设置显示的VIEW可裁剪
intent.putExtra("crop", "true");
// aspectX aspectY 是宽高的比例
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
// outputX outputY 是裁剪图片宽高
intent.putExtra("outputX", 300);
intent.putExtra("outputY", 300);
intent.putExtra("return-data", true);
startActivityForResult(intent, REQUEST_CUT_PHOTO);
}
}
 
裁剪后保存和上传图片:
/**
* 保存裁剪之后的图片数据
*
* @param picdata
*/
private void setPicToView(Intent picdata) {
Bundle extras = picdata.getExtras();
if (extras != null) {
// 取得SDCard图片路径做显示
Bitmap photo = extras.getParcelable("data");
mSzImageFileName = Long.toString(System.currentTimeMillis()) + ".png";
mImgUrlPath = Environment.getExternalStorageDirectory() + File.separator + "cut_image" + File.separator + mSzImageFileName;
try {
NetUtil.saveBitmapToFile(photo, mImgUrlPath);
} catch (IOException e) {
e.printStackTrace();
}
 
 
// 新线程后台上传服务端
new Thread(uploadImageRunnable).start();
}
}
 
上传图片的线程:
Runnable uploadImageRunnable = new Runnable() {
@Override
public void run() {
Map<String, String> params = new HashMap<
编程开发网
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Android高效计算——RenderScript.. 下一篇Android---闪频页和倒计时

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

最新文章

热门文章

C 语言

C++基础

windows编程基础

linux编程基础

C/C++面试题目