Bitmap crop en Android

Se ha hablado mucho, pero mucho de como hacer crop (recortar) una imagen en Android. Si uno busca en Google, probablemente lo que encuentre es muchos posts y discusiones sobre el uso de una actividad de recorte que “normalmente” traen los devices. Se debe destacar que a pesar de que dicha Actividad se encuentra en el mismísio código fuente de Android, al ser una Actividad interna, no nos asegura de que se encuentre disponible en cualquier dispositivo y más aún, Google y sus ingenieros no recomiendan utilizarla. En todo caso, si usted lo que desea hacer es recortar una imagen a nivel de código, tal vez este script le pueda servir:

    public static Bitmap cropBitmap(Bitmap original, int height, int width) {
        Bitmap croppedImage = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
        Canvas canvas = new Canvas(croppedImage);

        Rect srcRect = new Rect(0, 0, original.getWidth(), original.getHeight());
        Rect dstRect = new Rect(0, 0, width, height);

        int dx = (srcRect.width() - dstRect.width()) / 2;
        int dy = (srcRect.height() - dstRect.height()) / 2;

        // If the srcRect is too big, use the center part of it.
        srcRect.inset(Math.max(0, dx), Math.max(0, dy));

        // If the dstRect is too big, use the center part of it.
        dstRect.inset(Math.max(0, -dx), Math.max(0, -dy));

        // Draw the cropped bitmap in the center
        canvas.drawBitmap(original, srcRect, dstRect, null);

        original.recycle();

        return croppedImage;
    }

Éste código es tomado del source del proyecto Android y modificado para poder ejecutarse como una función. El código origjnal se puede encontrar aqui.