在Unity中,令人惊讶的是多年来唯一简单地缩放实际PNG的方法是使用非常棒的库http://wiki.unity3d.com/index.php/TextureScale。
以下是示例:
如何使用Unity5函数缩放PNG?现在有新的UI等等,肯定有办法了。
因此,可以缩放实际像素(例如
(顺便说一句,如果您是Unity的新手,则
以下是示例:
如何使用Unity5函数缩放PNG?现在有新的UI等等,肯定有办法了。
因此,可以缩放实际像素(例如
Color[]
)或直接从网络下载的PNG文件。(顺便说一句,如果您是Unity的新手,则
Resize
调用与此无关。它仅更改数组的大小。)public WebCamTexture wct;
public void UseFamousLibraryToScale()
{
// take the photo. scale down to 256
// also crop to a central-square
WebCamTexture wct;
int oldW = wct.width; // NOTE example code assumes wider than high
int oldH = wct.height;
Texture2D photo = new Texture2D(oldW, oldH,
TextureFormat.ARGB32, false);
//consider WaitForEndOfFrame() before GetPixels
photo.SetPixels( 0,0,oldW,oldH, wct.GetPixels() );
photo.Apply();
int newH = 256;
int newW = Mathf.FloorToInt(
((float)newH/(float)oldH) * oldW );
// use a famous Unity library to scale
TextureScale.Bilinear(photo, newW,newH);
// crop to central square 256.256
int startAcross = (newW - 256)/2;
Color[] pix = photo.GetPixels(startAcross,0, 256,256);
photo = new Texture2D(256,256, TextureFormat.ARGB32, false);
photo.SetPixels(pix);
photo.Apply();
demoImage.texture = photo;
// consider WriteAllBytes(
// Application.persistentDataPath+"p.png",
// photo.EncodeToPNG()); etc
}
顺便提一下,我可能只在谈论缩小图像的情况(因为你经常需要这样做才能发布图片,即兴创作等等)。我想,很少有必要将图像放大到更大的尺寸;这对于质量来说是没有意义的。