Cómo crear un mapa de bits cuadrado a partir de un mapa de bits rectangular en Android

Básicamente, tengo un mapa de bits rectangular y quiero crear un nuevo Mapa de bits con dimensiones cuadradas que contendrá el mapa de bits rectangular dentro de él.

Entonces, por ejemplo, si el mapa de bits de origen tiene ancho: 100 y alto: 400, quiero un nuevo mapa de bits con ancho: 400 y alto: 400. Luego, dibuje el mapa de bits de origen centrado dentro de este nuevo mapa de bits (vea la imagen adjunta para una mejor comprensión).

Mi código a continuación crea la multa de mapa de bits cuadrada, pero el mapa de bits de origen no se está dibujando en ella. Como resultado, me quedo con un mapa de bits que es completamente negro.

Aquí está el código:

Bitmap sourceBitmap = BitmapFactory.decodeFile(sourcePath);

Bitmap resultBitmap= Bitmap.createBitmap(sourceBitmap.getHeight(), sourceBitmap.getHeight(), Bitmap.Config.ARGB_8888);

Canvas c = new Canvas(resultBitmap);

Rect sourceRect = new Rect(0, 0, sourceBitmap.getWidth(), sourceBitmap.getHeight());
Rect destinationRect = new Rect((resultBitmap.getWidth() - sourceBitmap.getWidth())/2, 0, (resultBitmap.getWidth() + sourceBitmap.getWidth())/2, sourceBitmap.getHeight());
c.drawBitmap(resultBitmap, sourceRect, destinationRect, null);

// save to file
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "MyApp");
File file = new File(mediaStorageDir.getPath() + File.separator + "result.jpg");
try {
    result.compress(CompressFormat.JPEG, 100, new FileOutputStream(file));
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

¿Alguna idea de lo que estoy haciendo mal?

Respuestas a la pregunta(2)

Su respuesta a la pregunta