Hello, is it possible to compress a texture that's already in vram?

I'm creating textures using fractals so I have to render to them uncompressed, I then load them back into CPU memory, and then send them over again compressed.
Something like this:-

glGetTexImage(GL_TEXTURE_2D, 0, colour_format, colour_type, image);
glTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGB, width, height, 0, colour_format, colour_type, image);

It seems like wasteful bandwidth to me, is there any other way of doing this without the transfer? I'm guessing not, but I'd like to be certain.

Thanks again,