Aquí les dejo un ejemplo rápido y sencillo sobre como comprimir un byte array

byte[] datos = “compression string”.getBytes();

// Comprimimos con el mayor nivel de compresión

Deflater compresor = new Deflater();

compresor.setLevel(Deflater.BEST_COMPRESSION);

// Le damos a “compresor” los datos a comprimir

compresor.setInput(datos);

compresor.finish();

//En este paso vamos a crear un byte array expansible para tener todos los datos comprimidos

//es importante saber que NO ES necesario que los datos comprimidos sean menos que los datos no comprimidos

ByteArrayOutputStream bos = new ByteArrayOutputStream(datos.length);

// se comprimen los datos

byte[] buf = new byte[1024];

while (!compresor.finished()) {

int count = compresor.deflate(buf);

bos.write(buf, 0, count);

}

try {

bos.close();

} catch (IOException e) {

}

// obtenemos los datos ya comprimidos

byte[] datoscompresos = bos.toByteArray();