获取本地照片和拍照上传并裁剪的实现
2015-06-19 11:41
417 查看
// 获取照片方法 public void showPhtoes() { String[] s = { "照相", "从照册取出", "取消" }; Builder builder = new Builder(this); builder.setItems(s, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case 0: // if (SDcardUtil.isExistsSdcard()) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "temp.jpg"))); startActivityForResult(intent,Constants.IntentRequestCodes.PHOTOINTENTREQUESTCODE); // } else { // Alert.displayToastForLengthShort( // SetDetailsinfoManagement.this, "SD卡不存在"); // } break; case 1: // if (SDcardUtil.isExistsSdcard()) { Intent intent1 = new Intent(Intent.ACTION_GET_CONTENT, null); intent1.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*"); startActivityForResult(intent1,Constants.IntentRequestCodes.PHOTOZOOMQUESTCODE); // } else { // Alert.displayToastForLengthShort( // SetDetailsinfoManagement.this, "SD卡不存在"); // } break; case 2: break; } } }).create().show(); } protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { // 如果是直接从相册获取 case Constants.IntentRequestCodes.PHOTOZOOMQUESTCODE: <span style="white-space:pre"> </span>startPhotoZoom(data.getData()); break; // 如果是调用相机拍照时 case Constants.IntentRequestCodes.PHOTOINTENTREQUESTCODE: File temp = new File(Environment.getExternalStorageDirectory()+ "/temp.jpg"); startPhotoZoom(Uri.fromFile(temp)); break; // 取得裁剪后的图片 case Constants.IntentRequestCodes.PHOTORESOULTQUESTCODE: /** * 非空判断大家一定要验证,如果不验证的话, 在剪裁之后如果发现不满意,要重新裁剪,丢弃 * 当前功能时,会报NullException,只 在这个地方加下,大家可以根据不同情况在合适的 地方做判断处理类似情况 */ if (data != null) { <span style="white-space:pre"> </span>setPicToView(data); } break; case RESULT_CANCELED: return; default: break; } super.onActivityResult(requestCode, resultCode, data); } /** * 裁剪图片方法实现 * * @param uri */ public void startPhotoZoom(Uri uri) { Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); intent.putExtra("crop", "true"); intent.putExtra("return-data", true); startActivityForResult(intent,Constants.IntentRequestCodes.PHOTORESOULTQUESTCODE); } /** * 保存裁剪之后的图片数据 * * @param picdata */ private void setPicToView(Intent picdata) { Bundle extras = picdata.getExtras(); if (extras != null) { Bitmap photo = extras.getParcelable("data"); /** * 下面注释的方法是将裁剪之后的图片以Base64Coder的字符方式上 传到服务器 */ String tp = StringUtil.ConvertByteArrayToBase64(BitmapUtil.bitmap2Bytes(photo)); ByteArrayOutputStream stream = new ByteArrayOutputStream(); photo.compress(Bitmap.CompressFormat.PNG, 75, stream);// (0 - 100)压缩文件 companyview.setImageBitmap(photo); } }
相关文章推荐
- codeforces #308 D.Vanya and Triangles(枚举+斜率分块)
- Go语言学习示例
- 日常小知识(移动端)
- Oracle--常见Exception
- 数学 Codeforces Round #308 (Div. 2) B. Vanya and Books
- 软件概要设计说明书
- win10应用程序添加到开机启动项的两种解决办法
- iOS 检测内存泄露
- 国家超级计算天津中心免费测试活动(长期有效)
- Mysql 多表联合查询效率分析及优化
- Java 语言特点
- 软件详细设计说明书
- 利用mybatis-generator自动生成代码
- 在 C/C++ 语言中特定的宏,__FUNCTION__ 等
- VIM个性化配置
- 折弯机——C#读写ini文件
- PostgreSql初探(1)-源码安装
- Objective-C----初识Objective-C
- android kill掉程序进程
- 解决ajax提交form,点击保存按钮和点击回车效果不同的问题