Its slow because all the image processing is being done in c#. Its single threaded, and the Unity api creates multiple copies of data in various places, which doesn't help things. There isn't a great deal that can be done I'm afraid. We did try some stuff avoiding the use of any unity classes (Texture2D being one of them) but that proved to be a significant amount of work for a very tiny proportion of our users.