查找在运行时导入的图像的大小

时间:2016-02-11 08:11:07

标签: image unity3d runtime unityscript dimensions

我目前正在运行时从存储在XML文件中的目录加载图像,并通过WWW类将它们分配给RawImage组件。虽然这样可以正常工作,但图像会偏斜以适应新的纹理尺寸。

我想知道如何获得图像的原始大小或宽高比,以便我可以更改图像的大小以适应。要导入的图像大小不一,因此使用的方法需要响应导入图像的原始大小。

我们非常感谢任何建议。 [用uJS编写脚本]

非常感谢Ryan

function loadContextImage(texLocation : String)
{
    if (!imageView.activeSelf)
    {
        imageView.SetActive(true);
    }

    var wwwDirectory = "file://" + texLocation; //this will probably need to change for other OS (PC = file:/ [I think?]) - **REVISE**  
    var newImgTex = new Texture2D(512, 512);

    while(true){

        var www : WWW = new WWW(wwwDirectory);

        yield www;

        www.LoadImageIntoTexture(newImgTex);

        if (www.isDone){
            break; //if done downloading image break loop
        }
    }

    var imageRender : UI.RawImage = imageView.GetComponent.<RawImage>();
    imageRender.texture = newImgTex;
}

1 个答案:

答案 0 :(得分:0)

如果您无法使用图像(出于正当理由),您可以获得纹理的宽度和高度:

WWW www = new WWW(url);
yield return www;
Texture2D tex = www.texture; 
float aspectRatio = tex.height / tex.width;
rawImage.width = width;
rawImage.height = width * aspectRatio;

这应该使图像的矩形与纹理的比例适当。

如果你可以使用Image和preserveAspectRatio,你可以通过Unity完成它。结果不一定相同,因为它将保持盒子的尺寸并使Sprite在保持比率的同时占据尽可能多的空间。