如何使用高度和宽度调整Texture2D的大小?

时间:2019-07-09 09:16:47

标签: c# opencv unity3d image-resizing texture2d

我试图用大小和宽度调整纹理的大小,并且显示宽度/高度以外的显示索引

需要调整纹理的大小,因为我正在其他纹理上使用它以应用于特定坐标,因此我无法调整纹理的大小 图形是我的texture2D

graphics.Resize((horizo​​ntalx-horizo​​ntaly),(verticalx-verticaly),TextureFormat.RGBA32,false); //创建具有高度和宽度的纹理

只能在RGBA32或BGRA32纹理上调用SetPixels32,但可以在TextureFormat(12)UnityEngine.Texture2D:SetPixels32(Color32 [])上调用

1 个答案:

答案 0 :(得分:1)

调整大小的最简单方法可能是调用Graphics.Blit,目标是一个新的RenderTexture并使用Texture2D作为源。如果以后需要将其用作Texture2D,则可以在RenderTexture上调用ReadPixels

using UnityEngine;
using UnityEngine.UI;

public class Resizer : MonoBehaviour {
    public Texture2D inputtexture2D;
    public RawImage rawImage;
    [ExposeMethodInEditor]
    void Start()
    {
        rawImage.texture=Resize(inputtexture2D,200,100);
    }
    Texture2D Resize(Texture2D texture2D,int targetX,int targetY)
    {
        RenderTexture rt=new RenderTexture(targetX, targetY,24);
        RenderTexture.active = rt;
        Graphics.Blit(texture2D,rt);
        Texture2D result=new Texture2D(targetX,targetY);
        result.ReadPixels(new Rect(0,0,targetX,targetY),0,0);
        result.Apply();
        return result;
    }
}