EncodeToPng that works more smoothly on mobile

On iOS Android - Is it possible for a texture2D to be encoded to png that doesn’t freeze the frame for a perceptible second or two?

Here’s a snippet example of the freeze delay from a screenshot encoded to png

	void screenshot(){
		int width = Screen.width;
		int height = Screen.height;
 		 tex = new Texture2D( width, height, TextureFormat.RGB24, false );
    
   		 tex.ReadPixels(new Rect(0, 0, width, height), 0, 0 );
    	         tex.Apply();
		
		// this produces a noticable pause on mobile
		byte[] bytes = tex.EncodeToPNG();
	}

That can not be avoided completely.
ReadPixels locks the rendering and reads all pixels from the GPU to RAM which is a quite a visual hickup especially on iPad Retina.

The only part that can be made less impacting would be to replace the EndcodeToPNG with an own threaded implementation. That would likely shorten the length of the pause.