Android, Comprimiendo una imagen

Estoy enviando una imagen a través de la red a través de wifi o la red móvil para que se almacene en un servidor y se recupere nuevamente. Lo he hecho, pero debido al tamaño de las imágenes tomadas por la cámara, mi aplicación está lenta, solo para señalar que estoy abriendo la galería y tomando las fotos desde allí y no tomando la foto directamente desde la aplicación. Me he dado cuenta de que las imágenes de WhatsApp que se han tomado de la cámara y la galería se han comprimido a aprox. 100kb.

En el momento mi código toma un archivo y lo convierte en bytes y luego lo envía. Aquí está el método para tomar un archivo y convertirlo a bytes.

<code>private void toBytes(String filePath){
    try{
        File file = new File(filePath);
        InputStream is = new BufferedInputStream(new FileInputStream(file));  
        ByteArrayOutputStream buffer = new ByteArrayOutputStream();
        bytes = new byte[(int) filePath.length()];
        int bytes_read;
        while((bytes_read = is.read(bytes, 0, bytes.length)) != -1){
            buffer.write(bytes, 0, bytes_read);
        }
        is.close();               
        bytes = buffer.toByteArray();
    }catch(Exception err){
        Toast.makeText(getApplicationContext(), err.toString(), Toast.LENGTH_SHORT).show();
    }
}
</code>

Entonces, mi pregunta es ¿cómo podría comprimir mi imagen antes de enviarla? Además, no necesito que la imagen conserve un alto número de píxeles, ya que cuando la aplicación usa la imagen solo ocupará la mitad de la pantalla del dispositivo.

Gracias por la ayuda prestada.

Respuestas a la pregunta(3)

Su respuesta a la pregunta