我有一个byte []数组,它读取一个本地文件,然后我将它分配给一个单一的Texture2D。使用im.sprite = Sprite.Create()函数分配图像。
我遇到的问题是我需要从字节数组中检测图像的宽度和高度,这样我就可以调整纹理大小,避免在运行时在统一场景上进行图像拉伸。
你知道如何使用库或某种函数从图像字节数组创建临时图像,然后在创建精灵并应用纹理之前看到所需的宽度和高度吗?
我已经在Java中找到了解决方案但却无法通过适应c#来实现它。
答案 0 :(得分:8)
调用Texture2D.LoadImage
时,它会自动将Texture2D
实例替换为图像的大小。然后,您可以从Texture2D
实例中获取宽度和高度,并将其传递给Sprite.Create
函数。
将图像加载到字节数组
byte[] imageBytes = loadImage(savePath);
创建新的Texture2D
Texture2D texture = new Texture2D(2, 2);
将其加载到Texture2D中。 调用LoadImage后,2x2将替换为该图像的大小。
texture.LoadImage(imageBytes);
您的图片组件
Image im = GetComponent<Image>();
您可以使用它创建一个新的Rect
,然后将其传递给您的Sprite函数以创建新的Sprite
。
im.sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
详细了解Texture2D.LoadImage
函数here。
您只需要Texture2D.width
和Texture2D.height
个变量。