查找运行时导入的图像的大小
Finding size of images imported at runtime
我目前正在运行时从存储在 XML 文件中的目录加载图像,并通过 WWW class 将它们分配给 RawImage 组件。虽然这工作正常,但图像会倾斜以适应新的纹理大小。
我想知道如何获取图像的原始尺寸或纵横比,以便我可以更改图像的矩形尺寸以适合。要导入的图像大小不一,因此使用的方法需要响应导入图像的原始大小。
如有任何建议,我们将不胜感激。 [在 uJS 中编写脚本]
提前致谢,瑞安
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;
}
如果你不能使用图像(出于任何正当理由),你可以获取纹理的宽度和高度:
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 在保持比例的同时占据尽可能多的 space。
我目前正在运行时从存储在 XML 文件中的目录加载图像,并通过 WWW class 将它们分配给 RawImage 组件。虽然这工作正常,但图像会倾斜以适应新的纹理大小。
我想知道如何获取图像的原始尺寸或纵横比,以便我可以更改图像的矩形尺寸以适合。要导入的图像大小不一,因此使用的方法需要响应导入图像的原始大小。
如有任何建议,我们将不胜感激。 [在 uJS 中编写脚本]
提前致谢,瑞安
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;
}
如果你不能使用图像(出于任何正当理由),你可以获取纹理的宽度和高度:
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 在保持比例的同时占据尽可能多的 space。