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);
Share:
24,527
Rohit
Author by

Rohit

Android Application Developer Hardcore PC Gamer Playing Android Games

Updated on August 10, 2022

Comments

  • Rohit
    Rohit over 1 year

    I want to show only some part of image in imageview. See following image . image part

    Same example can be found in google+ app where you see all posts with images.

    Any links ,code will be helpful. Thanks

  • Rohit
    Rohit over 11 years
    how to set newWidth equal to device width so that image will be scaled according to device screen width ?
  • Rohit
    Rohit over 11 years
    I have tried this but I cant set new image width according to device screen size , see comment no.1 on deepika answer
  • Deepika
    Deepika over 11 years
    int newWidth=getWindowManager().getDefaultDisplay().getWidth();
  • Nam Vu
    Nam Vu over 11 years
    Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(‌​); int screenWidth = display.getWidth();
  • Rohit
    Rohit over 11 years
    btw 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
    Deepika over 11 years
    Is this image stretching after setting newWidth equal to Device width or before?
  • Rohit
    Rohit over 11 years
    I 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
    Deepika over 11 years
    that'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
    Rohit over 11 years
    one 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
    Deepika over 11 years
    U can find your this question's solution here