Unity 图片转换为base64的操作
时间: 2025-06-27 15:17:15 浏览: 7
### Unity 中将图片转换为 Base64
在 Unity 中实现图像到 Base64 字符串的转换主要涉及读取图像文件并将其编码为 Base64 编码字符串。此过程通常包括加载纹理数据,获取其原始字节表示形式,并最终应用 Base64 编码。
对于 Maven 依赖项,在 Unity 环境下并不适用,因为 Unity 使用的是自己的包管理工具(Unity Package Manager 或者直接集成第三方库)。因此不需要像 Java 开发那样添加额外的依赖来处理 IO 操作[^1]。
下面是一个具体的 C# 实现方式用于在 Unity 中完成这一操作:
```csharp
using UnityEngine;
public static class ImageToBase64Converter {
/// <summary>
/// 将Texture2D对象转化为Base64字符串.
/// </summary>
public static string ConvertTextureToBase64(Texture2D texture, bool isPng=true){
byte[] bytes;
if (isPng) {
bytes = texture.EncodeToPNG();
} else {
bytes = texture.EncodeToJPG();
}
return System.Convert.ToBase64String(bytes);
}
/// <summary>
/// 加载Sprite资源并返回对应的Base64字符串.
/// </summary>
public static string LoadAndConvertSpriteToBase64(Sprite sprite, bool isPng=true){
Texture2D tex = SpriteToTexture(sprite);
return ConvertTextureToBase64(tex, isPng);
}
private static Texture2D SpriteToTexture(Sprite sprite){
RenderTexture rt = RenderTexture.GetTemporary(
Mathf.CeilToInt(sprite.rect.width),
Mathf.CeilToInt(sprite.rect.height),
0);
Graphics.Blit(null, rt);
RenderTexture previousRt = RenderTexture.active;
RenderTexture.active = rt;
Texture2D readableTextire = new Texture2D((int)sprite.rect.width,
(int)sprite.rect.height);
readableTextire.ReadPixels(new Rect(0, 0,
Mathf.CeilToInt(sprite.rect.width),
Mathf.CeilToInt(sprite.rect.height)),
0, 0);
readableTextire.Apply();
RenderTexture.active = previousRt;
RenderTexture.ReleaseTemporary(rt);
Color[] pixels = readableTextire.GetPixels(0, 0,
readableTextire.width,
readableTextire.height);
readableTextire.SetPixels(pixels);
readableTextire.Apply(true);
return readableTextire;
}
}
```
上述代码展示了两个静态方法 `ConvertTextureToBase64` 和 `LoadAndConvertSpriteToBase64` 来分别处理来自 `Texture2D` 对象以及 `Sprite` 资源的数据转换工作。注意这里的 `SpriteToTexture` 方法是为了确保即使是从精灵表中提取出来的子图也能被正确渲染成完整的纹理再进行编码[^2]。
阅读全文
相关推荐



















