¿Cuántas formas de convertir bitmap a cadena y viceversa?

En mi aplicación, quiero enviar una imagen de mapa de bits al servidor en forma de cadena, quiero saber de cuántas maneras están disponibles para convertir un mapa de bits en una cadena. Ahora estoy usando el formato Base64 para codificar y decodificar, toma poco más memoria. ¿Existe alguna otra posibilidad de hacer lo mismo de diferentes maneras, lo que requiere menos costos de memoria? Ahora estoy usando este código.

Resources r = ShowFullImage.this.getResources();
Bitmap bm = BitmapFactory.decodeResource(r, R.drawable.col);
ByteArrayOutputStream baos = new ByteArrayOutputStream();  
bm.compress(Bitmap.CompressFormat.PNG, 100, baos); //bm is the bitmap object   
byte[] b = baos.toByteArray();

String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);

Respuestas a la pregunta(3)

Su respuesta a la pregunta