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?
Asked
Active
Viewed 1.8k times
12
-
The best library I found to crop images was [Android-Image-Cropper](https://github.com/ArthurHub/Android-Image-Cropper). See this [answer](https://stackoverflow.com/a/51985041/8383332). – Soon Santos Aug 23 '18 at 11:48
4 Answers
24
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);

Daniel Frear
- 1,459
- 14
- 22
-
works great. i have a question though: does the bitmap class support changing its size when it's mutable? or does it only allow to modify its data? if it can change its size, what would you do to your code to make it avoid creating a new bitmap? – android developer May 01 '13 at 10:01
-
1Just fyi, it's not necessary to create a resized bitmap. You can simply set the matrix to the imageView and then set the bitmap. The imageView will apply the matrix to the bitmap. – Nelson Ramirez May 31 '13 at 00:50
-
1
3
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();
}
}

lopez.mikhael
- 9,943
- 19
- 67
- 110
2
The Android Contact manager EditContactActivity uses Intent("com.android.camera.action.CROP")
This is a sample code:
Intent intent = new Intent("com.android.camera.action.CROP");
// this will open all images in the Galery
intent.setDataAndType(photoUri, "image/*");
intent.putExtra("crop", "true");
// this defines the aspect ration
intent.putExtra("aspectX", aspectY);
intent.putExtra("aspectY", aspectX);
// this defines the output bitmap size
intent.putExtra("outputX", sizeX);
intent.putExtra("outputY", xizeY);
// true to return a Bitmap, false to directly save the cropped iamge
intent.putExtra("return-data", false);
//save output image in uri
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
Then, startActivityWithResult()
to known wether the user pressed OK or Cancel. In the first case, the croped image will be saved in uri
.

rds
- 26,253
- 19
- 107
- 134
-
Good idea but "com.android.camera.action.CROP" is not official and might not work on some phones. – Oded Breiner Apr 05 '14 at 14:53
-
-3
<ImageView android:id="@+id/title_logo"
android:src="@drawable/logo"
android:scaleType="centerCrop" android:padding="4dip"/>

Eduardo Cuomo
- 17,828
- 6
- 117
- 94