I’m trying to load a sprite from the Resources folder, create a copy of a sprite’s Texture2D, and save that data to disk as a png file. Here is what I’ve got so far:
Sprite itemBGSprite = Resources.Load<Sprite>( "_Defaults/Item Images/_Background" );
Texture2D itemBGTex = itemBGSprite.texture;
byte[] itemBGBytes = itemBGTex.EncodeToPNG();
BinaryFormatter bf = new BinaryFormatter();
FileStream file = File.Create( formattedCampaignPath + "/Item Images/Background.png" );
bf.Serialize( file , itemBGBytes );
file.Close();
This succeeds in creating a file called Background.png in the correct folder in the correct location; however, the file turns out 1 KB in size and corrupted.
My assumption is that the issue lies with EncodeToPNG–however, all of the answers here about EncodeToPNG seem to be years out-of-date, and the page ostensibly documenting the EncodeToPNG method no longer exists. Am I doing something wrong here? Is there some new alternative to EncodeToPNG that I should be using instead?