Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to crop the parsed image in android?

Tags:

android

crop

I am parsing a website to display the contents in a URL, in that some images are there. I want to crop the images which are parsed from the site. I'm really struggling on this, can any one help me regarding on this?

like image 424
Sankar Ganesh PMP Avatar asked Sep 16 '10 09:09

Sankar Ganesh PMP


2 Answers

I assume you've already "got" the images down from the website and want to resize rather than crop? I.e. create thumbnails.

If so, you can use the following:

    // load the origial BitMap (500 x 500 px)
    Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(), 
           R.drawable.android);

    int width = bitmapOrg.width();
    int height = bitmapOrg.height();
    int newWidth = 200;
    int newHeight = 200;

    // calculate the scale - in this case = 0.4f
    float scaleWidth = ((float) newWidth) / width;
    float scaleHeight = ((float) newHeight) / height;

    // createa matrix for the manipulation
    Matrix matrix = new Matrix();
    // resize the bit map
    matrix.postScale(scaleWidth, scaleHeight);

    // recreate the new Bitmap
    Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0, 
                      width, height, matrix, true); 

    // make a Drawable from Bitmap to allow to set the BitMap 
    // to the ImageView, ImageButton or what ever
    BitmapDrawable bmd = new BitmapDrawable(resizedBitmap);

    ImageView imageView = new ImageView(this);

    // set the Drawable on the ImageView
    imageView.setImageDrawable(bmd);

    // center the Image
    imageView.setScaleType(ScaleType.CENTER);
like image 117
Daniel Frear Avatar answered Sep 28 '22 11:09

Daniel Frear


Best link github -> AndroidImageCrop

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    photoPicker();
}

private void photoPicker() {
    Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
    photoPickerIntent.setType("image/*");
    startActivityForResult(photoPickerIntent, 1);
}

private void crop(Uri photoUri) {
    Intent intent = new Intent("com.android.camera.action.CROP");
    intent.setData(photoUri);
    intent.putExtra("outputX", 200);
    intent.putExtra("outputY", 200);
    intent.putExtra("aspectX", 1);
    intent.putExtra("aspectY", 1);
    intent.putExtra("scale", true);
    intent.putExtra("return-data", true);
    startActivityForResult(intent, RESULT_CROP);
}

protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);
    if (resultCode == RESULT_OK) {
        Uri photoUri = intent.getData();
        if (photoUri != null) {
            Log.i("TAG", "Start Crop!!");
            crop(photoUri);
        }
    } else if (resultCode == RESULT_CROP) {
        Toast.makeText(this, "Image crop", Toast.LENGTH_SHORT).show();
    }
}
like image 39
lopez.mikhael Avatar answered Sep 28 '22 11:09

lopez.mikhael