2017-05-02 95 views
4

我有一个byte []数组读取本地文件,然后将其分配给统一的Texture2D。图像使用im.sprite = Sprite.Create()函数进行分配。从字节数组数据获取图像宽度和高度

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

你知道我怎样才能使用库或函数的某种可能创建一个临时图像从图像字节数组,然后看到所需的宽度和高度,然后创建精灵和应用纹理?

我在Java中找到解决方案,但无法通过在c#中进行自适应来获得解决方案。

+0

可能的重复[字节数组到图像转换](http://stackoverflow.com/questions/9173904/byte-array-to-image-conversion) – Mat

+0

@Mat它不是重复的。这是Unity。 – Programmer

回答

6

当调用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

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变量。

+1

非常感谢你。 – Diego

相关问题