Android拍照并保存(对图片进行压缩,分解)
来源:互联网 发布:js委托事件 编辑:程序博客网 时间:2024/04/28 04:24
转载:http://blog.csdn.net/gao_chun/article/details/40864121
具体功能:将拍摄的照片保存到SDcard中
具体需求:1.图片名保存格式:图片名称_手机型号_随机4位数.jpg
2.将图片分解,压缩,显示
3.写入SDCard卡保存具体实现:
1.定义布局文件
2.编写业务代码这里只对调用相机拍照、图片显示、保存 做介绍 并提供源码下载点击按钮后:
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.btn_getphoto:
- mPhotoName = mETphotoName.getEditableText().toString();
- mModel = mETmodel.getEditableText().toString();
- if(TextUtils.isEmpty(mPhotoName) || TextUtils.isEmpty(mModel)){
- Toast.makeText(this,"请输入图片名称和型号",0).show();
- return;
- }
- final String state = Environment.getExternalStorageState();
- if (Environment.MEDIA_MOUNTED.equals(state)) {
- final Intent takePictureImIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
- ContentValues values = new ContentValues();
- mPhotoUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
- takePictureImIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mPhotoUri);
- startActivityForResult(takePictureImIntent,REQUEST_CODE_TAKE_PICTURE);
- } else {
- Toast.makeText(this,"请检查内存卡", 0).show();
- }
- break;
-
- default:
- break;
- }
-
- }
onActivityResult回调:
-
-
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- switch (requestCode) {
-
- case REQUEST_CODE_TAKE_PICTURE:
-
- if (resultCode == Activity.RESULT_OK) {
- final Uri uri = mPhotoUri;
- Log.e("MainActivity",uri+"");
- if (uri != null) {
- processPicture(uri);
- }
-
-
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setTitle("提示");
- builder.setMessage("是否需要保存图片?");
- builder.setNegativeButton("取消", null);
- builder.setPositiveButton("是的", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- String resetPhotoName = mPhotoName+"_"+mModel+"_"+Utils.getRandomString(4);
- Utils.savePhotoToSDCard(bitmap,Utils.genProjectPath(),resetPhotoName);
- Toast.makeText(MainActivity.this,"成功--->"+Utils.genProjectPath()+resetPhotoName,0).show();
-
-
- mETphotoName.setText("");
- mETmodel.setText("");
-
- dialog.cancel();
- }
- });
- builder.show();
-
- }
- break;
-
- default:
- super.onActivityResult(requestCode, resultCode, data);
- break;
- }
- }
图片显示:
-
-
-
-
- private void processPicture(Uri uri) {
- final String[] projection = {MediaStore.Images.Media.DATA};
- final Cursor cursor = managedQuery(uri, projection, null, null, null);
- cursor.moveToFirst();
- final int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
- String imagePath = cursor.getString(columnIndex);
- Log.e("MainActivity",imagePath);
-
- final String targetPath = BitmapUtils.toRegularHashCode(imagePath) + ".jpg";
- BitmapUtils.compressBitmap(imagePath, targetPath, 640);
- bitmap = BitmapUtils.decodeBitmap(imagePath, 150);
- mImage.setImageBitmap(bitmap);
-
-
-
-
-
-
- }
源码下载地址:http://download.csdn.net/detail/gao_chun/8128717 0 0