Android, Bild beschneiden, nach genommen

Ich versuche zu lassen, um Benutzer zuschneiden von Bildern nach der Aufnahme /Auswahl aus der Galerie. Nun, das zuschneiden nach der Auswahl aus der Galerie funktioniert, aber nicht die Kamera. Hier sind meine codes, ich erhalte keine Fehlermeldung. Wir folgten http://mobile.tutsplus.com/tutorials/android/capture-and-crop-an-image-with-the-device-camera/

//Camera button  clicked
    public void camera_click(View view) {
        Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        cameraIntent.putExtra("return-data", true);
        startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);

    } 
    //Result of camera capture
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
                 //camera
            if (requestCode == CAMERA_PIC_REQUEST) {

                mImageCaptureUri = data.getData();
                performCrop();
            }
            if (requestCode == PIC_CROP) {
                //get the returned data
                try{
                Bundle extras = data.getExtras();
//get the cropped bitmap
                thumbnail = extras.getParcelable("data");
                //retrieve a reference to the ImageView
                ImageView image = (ImageView) findViewById(R.id.test_image);
//display the returned cropped image
                image.setImageBitmap(thumbnail);
                TextView imgTv = (TextView) findViewById(R.id.imageInfo);
                String desc = imgTv.getText().toString();
                if (desc.equalsIgnoreCase("")) {
                    String errorMessage = "Please enter a description before submitting a photo.";
                    Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT);
                    toast.show();
                } else {

                }
                }
                catch(Exception ex)
                {
                    Log.i("err", ex.getMessage());
                }
            }
                 //gallery selected
            if (requestCode == SELECT_PHOTO) {
                if (data != null) {

                    Cursor cursor = getContentResolver().query(data.getData(), null, null, null, null);
                    cursor.moveToFirst();  //if not doing this, 01-22 19:17:04.564: ERROR/AndroidRuntime(26264): Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
                    int idx = cursor.getColumnIndex(ImageColumns.DATA);
                    String fileSrc = cursor.getString(idx);
                    thumbnail = BitmapFactory.decodeFile(fileSrc); //load preview image
                    thumbnail = android.graphics.Bitmap.createScaledBitmap(thumbnail, 100, 100, true);
                    //  ImageView image = (ImageView) findViewById(R.id.test_image);
                    //image.setImageBitmap(thumbnail);
                    ImageButton cam = (ImageButton) findViewById(R.id.camera);
                    //   cam.setVisibility(View.INVISIBLE);
                    ImageButton gal = (ImageButton) findViewById(R.id.gallery);
                    mImageCaptureUri = data.getData();
                    // gal.setVisibility(View.INVISIBLE);
                    performCrop();

                } else {
                    //Log.d(LOG_TAG, "idButSelPic Photopicker canceled");
                    //m_Tv.setText("Image selection canceled!");
                }

            }
        }
    }//end onactivity results

    //method to luanch crop image
private void performCrop() {
    try {
        //call the standard crop action intent (the user device may not support it)
        Intent cropIntent = new Intent("com.android.camera.action.CROP");


        cropIntent.setDataAndType(mImageCaptureUri, "image/*");
         //set crop properties
        cropIntent.putExtra("crop", "true");
        //indicate aspect of desired crop
        cropIntent.putExtra("aspectX", 1);
        cropIntent.putExtra("aspectY", 1);
        //indicate output X and Y
        cropIntent.putExtra("outputX", 256);
        cropIntent.putExtra("outputY", 256);
        //retrieve data on return
        cropIntent.putExtra("return-data", true);
        //start the activity - we handle returning in onActivityResult
        startActivityForResult(cropIntent, PIC_CROP);
    } catch (ActivityNotFoundException anfe) {
        //display an error message
        Log.i("err", anfe.getLocalizedMessage());
        String errorMessage = "Your device doesn't support the crop action!";
        Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT);
        toast.show();
        Intent myIntent = new Intent();
        startActivityForResult(myIntent, PIC_CROP);
    }
}
InformationsquelleAutor user2010424 | 2013-01-25
Schreibe einen Kommentar