So what im trying to do is take a render from the screen, turn it into a Texture2D and apply it to a sprite using Sprite.Create();

Here is my code:

// instance of the camera im getting on Awake()
private Camera _camera;

private Texture2D _screenShot;

    private IEnumerator TakeScreenShot()
    	{
    		yield return new WaitForEndOfFrame();
    
    		RenderTexture rt = new RenderTexture(resWidth, resHeight, 24);
    		_camera.targetTexture = rt;
    		_screenShot= new Texture2D(resWidth, resHeight, TextureFormat.RGB24, false);
    		_camera.Render();
    		RenderTexture.active = rt;
    		_screenShot.ReadPixels(new Rect(0, 0, resWidth, resHeight), 0, 0);
    		_camera.targetTexture = null;
    		RenderTexture.active = null;
    		Destroy(rt);
    
    		string filename = ScreenShotName(resWidth, resHeight);
    
    		//byte[] bytes = _screenShot.EncodeToPNG();
    		//System.IO.File.WriteAllBytes(filename, bytes);

    		Debug.Log(string.Format("Took screenshot to: {0}", filename));
    
    		Sprite tempSprite = Sprite.Create(_screenShot,new Rect(0,0,resWidth,resHeight),new Vector2(0,0));
    		GameObject.Find("SpriteObject").GetComponent<SpriteRenderer>().sprite = tempSprite;
    	}

All it does is change the SpriteObject.sprite color to white.
But when I try to save the content of the screenshot it turns out that there is actualy an image and not just white.

Perhaps you are missing apply after you read the pixels?

_screenShot.ReadPixels(new Rect(0, 0, resWidth, resHeight), 0, 0);

_screenShot.Apply(); //Add this?

_camera.targetTexture = null;