Is there a way to free the memory duplication of textures loaded at runtime?

I need to load textures at runtime that have never seen the unity editor. That means I can't use asset bundles.

The option I have seems to be Texture2d.LoadImage(). I've noticed that all of those images are "readable" and also that memory usage is very high. How can I avoid this extra memory ding of keeping all my textures on main memory?

It is currently not possible to set runtime generated textures as non-readable. While such a feature would be technically feasible, it is not a common use case, as people don't typically generate huge amounts of textures dynamically. Why do you need to do this? Possibly there is a better way to get the same results. Is texture memory usage actually an issue you are running into?

currently it's not possible to make textures unreadable but you can compress them using compression libraries or even pack them in zip files and extract them at runtime. search the net for "compression library for mono". i should remind something: you can not call unity libraries in threads other than the main thread