android - How to cut some part of image and show it in imageview
24,527
Solution 1
Use this code
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);
Solution 2
// Set some constants
private static final Bitmap SOURCE_BITMAP = BitmapFactory.decodeFile(....); // Get the source Bitmap using your favorite method :-)
private static final int START_X = 10;
private static final int START_Y = 15;
private static final int WIDTH_PX = 100;
private static final int HEIGHT_PX = 100;
// Crop bitmap
Bitmap newBitmap = Bitmap.createBitmap(SOURCE_BITMAP, START_X, START_Y, WIDTH_PX, HEIGHT_PX, null, false);
// Assign new bitmap to ImageView
ImageView image = (ImageView)findViewById(R.id.image_view);
image.setImageBitmap(newBitmap);
Author by
Rohit
Android Application Developer Hardcore PC Gamer Playing Android Games
Updated on August 10, 2022Comments
-
Rohit over 1 year
I want to show only some part of image in imageview. See following image .
Same example can be found in google+ app where you see all posts with images.
Any links ,code will be helpful. Thanks
-
Rohit over 11 yearshow to set newWidth equal to device width so that image will be scaled according to device screen width ?
-
Rohit over 11 yearsI have tried this but I cant set new image width according to device screen size , see comment no.1 on deepika answer
-
Deepika over 11 yearsint newWidth=getWindowManager().getDefaultDisplay().getWidth();
-
Nam Vu over 11 yearsDisplay display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); int screenWidth = display.getWidth();
-
Rohit over 11 yearsbtw one problem - it is stretching image I dont want to stretch image, i want to cut the part of image as I shown in example in question.. more commonly I want to crop it :)
-
Deepika over 11 yearsIs this image stretching after setting newWidth equal to Device width or before?
-
Rohit over 11 yearsI need to 1st resize image using ur code with width equal to device width and then use ZuzooVn's code to crop image to cut its height to say 100px..
-
Deepika over 11 yearsthat's because your original image width is small in size. if you only want to crop your image from the aspect of height then use int newWidth=bitmapOrg.width();
-
Rohit over 11 yearsone more question .. my image size is 2560 x 1920 .. I want to maintain aspect ratio of image but also want to resize its width to device width , so that it will be still have its aspect ratio after resizing its width to device width .. hope u understand wht i m saying .
-
Deepika over 11 yearsU can find your this question's solution here