1、Texture2d转Base64
public static string Texture2DToBase64(Texture2D texture)
{
byte[] data = texture.EncodeToPNG();
return Convert.ToBase64String(data);
}
2、Base64转Texture2d
public static Texture2D Base64ToTexture2D(string encoded)
{
byte[] data = Convert.FromBase64String(encoded);
int width, height;
GetImageSize(data, out width, out height);
Texture2D texture = new Texture2D(width, height, TextureFormat.ARGB32, false, true);
texture.hideFlags = HideFlags.HideAndDontSave;
texture.filterMode = FilterMode.Point;
texture.LoadImage(data);
return texture;
}
static void GetImageSize(byte[] imageData, out int width, out int height)
{
width = ReadInt(imageData, 3 + 15);
height = ReadInt(imageData, 3 + 15 + 2 + 2);
}
static int ReadInt(byte[] imageData, int offset)
{
return (imageData[offset] << 8) | imageData[offset + 1];
}
3、Texture2d转Sprite
public static Sprite Texture2DToSprite(Texture2D texture2D)
{
return Sprite.Create(texture2D, new Rect(0, 0, texture2D.width, texture2D.height), Vector2.zero);
}
4、Sprite转Texture2d
public static Texture2D SpriteToTexture2D(Sprite sprite)
{
Texture2D texture = new Texture2D((int)sprite.rect.width, (int)sprite.rect.height);
Color[] colors = sprite.texture.GetPixels(Mathf.RoundToInt(sprite.rect.x), Mathf.RoundToInt(sprite.rect.y), Mathf.RoundToInt(sprite.rect.width), Mathf.RoundToInt(sprite.rect.height));
texture.SetPixels(colors);
texture.Apply();
return texture;
}