I want to save only the cropped image into the gallery. but it saves the original full image. how to save only the cropped image?

前端 未结 4 1424
有刺的猬
有刺的猬 2021-01-16 19:00
public class ImageCroppMainActivity extends Activity implements OnClickListener{

final int CAMERA_CAPTURE = 1;

//keep track of cropping intent

final int PIC_CROP          


        
4条回答
  •  Happy的楠姐
    2021-01-16 19:12

    It can be done in only 3 steps -

    1)Android Manifest file

    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    2)SimpleCameraGalleryDemo Code

    package camera.test.demo;
    import android.app.Activity;
    import android.content.ActivityNotFoundException;
    import android.content.Intent;
    import android.graphics.Bitmap;
    import android.os.Bundle;
    import android.provider.MediaStore;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ImageView;
    
    public class SimpleCameraGalleryDemo extends Activity {
    private static final int PICK_FROM_CAMERA = 1;
    private static final int PICK_FROM_GALLERY = 2;
    ImageView imgview;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    
    imgview = (ImageView) findViewById(R.id.imageView1);
    Button buttonCamera = (Button) findViewById(R.id.btn_take_camera);`enter code here`
    Button buttonGallery = (Button) findViewById(R.id.btn_select_gallery);
    buttonCamera.setOnClickListener(new View.OnClickListener() {
    
    public void onClick(View v) {
    // call android default camera
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    
    intent.putExtra(MediaStore.EXTRA_OUTPUT,
    MediaStore.Images.Media.EXTERNAL_CONTENT_URI.toString());
    // ******** code for crop image
    intent.putExtra("crop", "true");
    intent.putExtra("aspectX", 0);
    intent.putExtra("aspectY", 0);
    intent.putExtra("outputX", 200);
    intent.putExtra("outputY", 150);
    
    try {
    
    intent.putExtra("return-data", true);
    startActivityForResult(intent, PICK_FROM_CAMERA);
    
    } catch (ActivityNotFoundException e) {
    // Do nothing for now
    }
    }
    });
    buttonGallery.setOnClickListener(new View.OnClickListener() {
    
    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
    Intent intent = new Intent();
    // call android default gallery
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    // ******** code for crop image
    intent.putExtra("crop", "true");
    intent.putExtra("aspectX", 0);
    intent.putExtra("aspectY", 0);
    intent.putExtra("outputX", 200);
    intent.putExtra("outputY", 150);
    
    try {
    
    intent.putExtra("return-data", true);
    startActivityForResult(Intent.createChooser(intent,
    "Complete action using"), PICK_FROM_GALLERY);
    
    } catch (ActivityNotFoundException e) {
    // Do nothing for now
    }
    }
    });
    }
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    
    if (requestCode == PICK_FROM_CAMERA) {
    Bundle extras = data.getExtras();
    if (extras != null) {
    Bitmap photo = extras.getParcelable("data");
    imgview.setImageBitmap(photo);
    
    }
    }
    
    if (requestCode == PICK_FROM_GALLERY) {
    Bundle extras2 = data.getExtras();
    if (extras2 != null) {
    Bitmap photo = extras2.getParcelable("data");
    imgview.setImageBitmap(photo);
    
    }
    }
    }
    }
    

    3) main.xml File

    
    
    
    
    
    

    I hope it is helpful to you.

提交回复
热议问题