¿Cómo convertir bitmap a PNG y luego a base64 en Android?

Como lo indica el título, estoy tratando de que el usuario de mi aplicación de Android seleccione una imagen de su dispositivo (listo), luego quiero reducir la imagen (listo), comprimir / convertir la imagen a png y enviarla a una API como una cadena base64.

Así que actualmente redimensiono la imagen como tal:

options.inSampleSize = calculateInSampleSize(options, MAX_IMAGE_DIMENSION, MAX_IMAGE_DIMENSION);
options.inJustDecodeBounds = false;
Bitmap bitmap = BitmapFactory.decodeFile(path, options);

Luego tengo un mapa de bits, que quiero convertir a un PNG, y de ahí a una base64. Encontré un código de ejemplo para convertir a un PNG y almacenarlo en el dispositivoaquí.

try {
       FileOutputStream out = new FileOutputStream(filename);
       bmp.compress(Bitmap.CompressFormat.PNG, 90, out);
       out.close();
} catch (Exception e) {
       e.printStackTrace();
}

El problema es que no quiero guardar la imagen. Solo quiero mantenerlo en la memoria como PNG y luego convertirlo a una cadena base64.

¿Alguien sabe cómo podría convertir la imagen a un png y almacenarla en una variable de esa manera, o incluso mejor, convertirla a base64 inmediatamente? Todos los consejos son bienvenidos!

Respuestas a la pregunta(1)

Su respuesta a la pregunta