Para guardar un Bitmap en la tarjeta SD podemos seguir el ejemplo siguiente:



//Guardar imagen
String root = Environment.getExternalStorageDirectory().toString (); //Raíz de la tarjeta SD
File myDir = new File(root + "/carpeta"); //Carpeta donde guardamos la imagen
if(!myDir.exists()) //Si no existe el directorio
myDir.mkdirs(); //Creamos el directorio
Random generator = new Random(); //Generamos un random para el nombre de la imagen
int n = 10000;
n = generator.nextInt(n);
String fname = "wp-"+ n +".jpg"; //El nombre de la imagen con el random creado
File file = new File (myDir, fname); //Creamos un file con la carpeta y el nombre
if (file.exists ()) file.delete (); //Si existe el fichero lo eliminamos
try {
FileOutputStream out = new FileOutputStream(file); //Añadimos el fichero a un FileOutputStream
imagenInternet.compress(Bitmap.CompressFormat.JPEG , 100, out); //Pasamos la imagen a JPEG con calidad 100 y le añadimos el output (imagenInternet es el bitmap)
out.flush(); //Guardamos
out.close(); //Cerramos el flujo
MediaScannerConnection.scanFile(activity, new String[]{file.getPath()}, new String[]{"image/jpeg"}, null); //Esto refresca la galería de imágenes de Android con la nueva imagen


} catch (Exception e) {
Log.e("FALLO AL GUARDAR",e.getMessage()+""); //Mostramos por consola si ha habido algún error.
}