android – Come tagliare una parte dell’immagine e mostrare in imageview

Voglio mostrare solo una parte di immagine in imageview. Vedi immagine seguente .
android - Come tagliare una parte dell'immagine e mostrare in imageview

Stesso esempio può essere trovato in google+ app dove puoi vedere tutti i post con le immagini.

Link ,codice sarà utile.
Grazie

InformationsquelleAutor Rohit | 2012-10-11

 

3 Replies
  1. 4

    Utilizzare questo codice

    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);
    • come impostare newWidth pari alla larghezza del dispositivo, in modo che l’immagine sarà essere scalati in base alla larghezza dello schermo del dispositivo ?
    • int newWidth=getWindowManager().getDefaultDisplay().getWidth();
    • btw un problema, è solo stretching immagine, non voglio allungare immagine, voglio tagliare una parte dell’immagine, come ho mostrato nell’esempio in questione.. più comunemente voglio ritagliare 🙂
    • È questa immagine di stretching dopo l’impostazione newWidth pari alla larghezza del Dispositivo o prima?
    • sì, lo stretching dopo l’impostazione newWidth alla larghezza del dispositivo
    • Ho bisogno di 1 ° ridimensionare l’immagine utilizzando ur codice con larghezza pari alla larghezza del dispositivo e quindi utilizzare ZuzooVn codice per ritagliare l’immagine per tagliare la sua altezza a dire 100px..
    • questo perché l’immagine originale larghezza è di piccole dimensioni. se solo si desidera ritagliare l’immagine l’aspetto di altezza quindi utilizzare int newWidth=bitmapOrg.larghezza();
    • ok buon punto, grazie 🙂
    • benvenuto 🙂
    • ancora una domanda .. la mia dimensione dell’immagine è di 2560 x 1920 .. voglio mantenere il rapporto di aspetto dell’immagine, ma anche di voler ridimensionare la sua larghezza e larghezza del dispositivo , in modo che sarà ancora il suo rapporto dopo il ridimensionamento della sua larghezza e larghezza del dispositivo .. spero u a capire wht i m dicendo .
    • U può trovare proprio di questo problema soluzione qui

  2. 7
    //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);
    • Ho provato questo, ma non posso impostare di nuovo la larghezza dell’immagine in base alle dimensioni dello schermo del dispositivo , si veda il commento n.1 deepika risposta
    • Display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); int screenWidth = display.getWidth();
  3. 0

    Se qualcuno sta cercando di tagliare l’immagine dal basso

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

    sostituire i seguenti parametri con questa logica

    y : (bitmapOrg.getHeight() – 1) – (altezza del rettangolo rosso presente nella domanda)

    altezza : (altezza del rettangolo rosso presente nella domanda)

    In questo modo si potrebbe evitare di eccezioni, ad esempio(per x, è necessario modificare di conseguenza)

    IllegalArgumentException: x + width must be <= bitmap.width() in android
    
    IllegalArgumentException: y + width must be <= bitmap.height() in android

Lascia un commento