从字节数组数据中获取图像宽度和高度

时间:2017-05-02 12:48:01

标签: c# arrays image unity3d

我有一个byte []数组,它读取一个本地文件,然后我将它分配给一个单一的Texture2D。使用im.sprite = Sprite.Create()函数分配图像。

我遇到的问题是我需要从字节数组中检测图像的宽度和高度,这样我就可以调整纹理大小,避免在运行时在统一场景上进行图像拉伸。

你知道如何使用库或某种函数从图像字节数组创建临时图像,然后在创建精灵并应用纹理之前看到所需的宽度和高度吗?

我已经在Java中找到了解决方案但却无法通过适应c#来实现它。

1 个答案:

答案 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.widthTexture2D.height个变量。