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

7
我有一个byte[]数组,它读取了本地文件,然后我将其分配给unity Texture2D。使用im.sprite = Sprite.Create()函数分配图像。
我的问题是,我需要从字节数组中检测图像的宽度和高度,以便在运行时调整纹理大小并避免在unity场景中出现图像拉伸。
你知道如何使用某种库或函数来创建临时图像,并在创建精灵并应用纹理之前查看所需的宽度和高度吗?
我已经在Java中找到了解决方案,但无法通过在c#中进行适应来使其工作。

@Mat 这不是重复内容。这是Unity。 - Programmer
1个回答

9
当调用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函数的更多信息。

你只需要使用Texture2D.widthTexture2D.height变量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接