Android 調用相機或圖庫,裁剪圖片

public class ThirdActivity extends Activity{


    Button take,photo;
    ImageView image;
    private Uri photoUri = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_third);

        photo = (Button)findViewById(R.id.third_button1);
        take = (Button)findViewById(R.id.third_button2);
        image = (ImageView)findViewById(R.id.third_imageView1);

        photo.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO 系統相冊
                Intent i = new Intent(
                        Intent.ACTION_PICK,
                        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);// 調用android的圖庫
                startActivityForResult(i, 2);
            }
        });
        take.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO 系統相機
                Intent intent = new Intent(
                        MediaStore.ACTION_IMAGE_CAPTURE);// 調用android自帶的照相機

                SimpleDateFormat timeStampFormat = new SimpleDateFormat(
                        "yyyy_MM_dd_HH_mm_ss");
                String filename = timeStampFormat
                        .format(new Date());
                **ContentValues values = new ContentValues();
                values.put(Media.TITLE, filename);**

                **photoUri = getContentResolver()
                        .insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                                values);**

                **intent.putExtra(MediaStore.EXTRA_OUTPUT,
                        photoUri);**

                startActivityForResult(intent, 1);
            }
        });

    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
        case 1:
            //相機
            if (resultCode == RESULT_OK) {
                if (data != null && data.getData() != null) {
                    Uri uri = data.getData();
                    photoUri = uri;
                }
                startImageAction(photoUri, 200, 200, 3, true);
            }
            break;
        case 2:
            //相冊
            if (resultCode == RESULT_OK) {
                if (data != null && data.getData() != null) {
                    Uri uri = data.getData();
                    photoUri = uri;
                    System.out.println(">>>>>>>>>>>>>>>>>>>>>>  " + photoUri.toString());
                }
                startImageAction(photoUri, 200, 200, 3, true);
            }
            break;
        case 3:
            if (data == null) {
                return;
            } else {
                Bundle extras = data.getExtras();
                if (extras != null) {
                    Bitmap bitmap = extras.getParcelable("data");
                    if (bitmap != null) {
                        image.setImageBitmap(bitmap);

                        if (bitmap != null && bitmap.isRecycled()) {
                            bitmap.recycle();
                        }
                    }
                }

            }
            break;
        case Activity.RESULT_CANCELED:
            break;

        }
    }

    private void startImageAction(Uri uri, int outputX, int outputY,
            int requestCode, boolean isCrop) {
        Intent intent = null;
        if (isCrop) {
            intent = new Intent("com.android.camera.action.CROP");
        } else {
            //intent = new Intent(Intent.ACTION_GET_CONTENT, null);
        }
        //在這個Uri下請求什麼類型的數據
        intent.setDataAndType(uri, "image/*");
        //裁剪照片的信號
        intent.putExtra("crop", "true");
        // 剪切的寬高比爲1:2
        intent.putExtra("aspectX", 1);
        intent.putExtra("aspectY", 1);
        //裁剪區的寬
        intent.putExtra("outputX", outputX);
        intent.putExtra("outputY", outputY);
        //是否保留比例
        intent.putExtra("scale", true);
        //直接輸出文件————改變原來的數據
//      intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
        //是否返回數據
        intent.putExtra("return-data", true);
//      intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
        //關閉人臉檢測
        intent.putExtra("noFaceDetection", true);
        startActivityForResult(intent, requestCode);
    }


}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章