• android调用照相机拍照获取照片并做简单剪裁


    2012CSDN年度博客之星评选期待您的参与

    http://vote.blog.csdn.net/item/blogstar/xyz_lmn


    1.调用系统的照相机程序
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
     startActivityForResult(intent, TAKE_PHOTO_WITH_DATA);

    2.在onActivityResult中处理返回的data
    final Bitmap photo = data.getParcelableExtra("data");
    如果不需要做剪切处理就可以直接使用图片了,比如输出到ImageView上
    imageView.setImageBitmap(photo);
    如果需要做剪切处理,就继续向下执行

    3.做剪切处理
            Intent intent = new Intent("com.android.camera.action.CROP");
            intent.setType("image/*");
            intent.putExtra("data", data);
            intent.putExtra("crop", "true");
            intent.putExtra("aspectX", 1);
            intent.putExtra("aspectY", 1);
            intent.putExtra("outputX", 128);
            intent.putExtra("outputY", 128);
            intent.putExtra("return-data", true);
    startActivityForResult(intent, PHOTO_PICKED_WITH_DATA);

    4.在onActivityResult中处理
    与第二步相同。

    完整代码:
    public class SdCardUriTestActivity extends Activity {
        /** Called when the activity is first created. */
        private Button btnTake = null;
        private ImageView lblImage = null;
       
        private static final int PHOTO_PICKED_WITH_DATA = 3021;
        private static final int CAMERA_WITH_DATA = 3023;
       
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
           
            btnTake = (Button)findViewById(R.id.btnTake);
            lblImage = (ImageView)findViewById(R.id.lblImage);
            btnTake.setOnClickListener(new View.OnClickListener() {
               
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                    startActivityForResult(intent, CAMERA_WITH_DATA);
                }
            });
           
        }
       
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            // TODO Auto-generated method stub
            if(resultCode!=RESULT_OK)
                return;
            switch(requestCode){
            case CAMERA_WITH_DATA:
                final Bitmap photo = data.getParcelableExtra("data");
                if(photo!=null){
                    doCropPhoto(photo);
                }
            case PHOTO_PICKED_WITH_DATA:
                Bitmap photo1 = data.getParcelableExtra("data");
                if(photo1!=null){
                    lblImage.setImageBitmap(photo1);
                }
               
            }
        }
       
        protected void doCropPhoto(Bitmap data){
            Intent intent = getCropImageIntent(data);
            startActivityForResult(intent, PHOTO_PICKED_WITH_DATA);
        }
       
        public static Intent getCropImageIntent(Bitmap data) {
            Intent intent = new Intent("com.android.camera.action.CROP");
            intent.setType("image/*");
            intent.putExtra("data", data);
            intent.putExtra("crop", "true");
            intent.putExtra("aspectX", 1);
            intent.putExtra("aspectY", 1);
            intent.putExtra("outputX", 128);
            intent.putExtra("outputY", 128);
            intent.putExtra("return-data", true);
            return intent;
        }
    }

    布局文件略
    注:1.6的sdk运行此代码会出现问题,具体原因还在调查。也希望知道原因的朋友帮帮忙。


    /**
    * @author 张兴业
    * 邮箱:xy-zhang#163.com
    * android开发进阶群:278401545
    *
    */

  • 相关阅读:
    礼物(枚举,二分)
    空调(差分)
    Prefix Equality(哈希)
    py导入时段报表+清理旧文件
    php 0504
    php 0511
    php 0512
    php 0506
    php 0505
    php 0510
  • 原文地址:https://www.cnblogs.com/xyzlmn/p/3168140.html
Copyright © 2020-2023  润新知