public Texture2D[] t = new Texture2D[4];
private void Start()
{
Texture2D tex = MergeImage(t);
byte[] bytes = tex.EncodeToJPG();
string filename = Application.streamingAssetsPath + "/Screenshot" + UnityEngine.Random.Range(0,1000) + ".png";
File.WriteAllBytes(filename , bytes);
}
public Texture2D MergeImage(Texture2D[] tex)
{
if (tex.Length == 0)
{
return null;
}
//定义新图的宽高, 合并分为两种情况水平方向合并、垂直方向合并
int width = 0, height = 0;
for (int i = 0; i < tex.Length; i++)
{
//Debug.Log(tex[i].ToString());
//新图的高度
//height += tex[i].height;
//if (i > 0)
//{
// //新图的宽度,这里筛选为最宽
// if (tex[i].width > tex[i - 1].width)
// {
// width = tex[i].width;
// }
//}
//else width = tex[i].width; //只有一张图
//新图的宽度
width += tex[i].width;
if (i > 0)
{
//新图的高度,这里筛选为最高
if (tex[i].height > tex[i - 1].height)
{
height = tex[i].height;
}
}
else height = tex[i].height; //只有一张图
}
//初始Texture2D
Texture2D texture2D = new Texture2D(width, height);
int x = 0, y = 0;
for (int i = 0; i < tex.Length; i++)
{
//取图
Color32[] color = tex[i].GetPixels32(0);
//赋给新图
if (i > 0)
{
//texture2D.SetPixels32(x, y+=tex[i-1].height, tex[i].width, tex[i].height, color); //高度
texture2D.SetPixels32(x += tex[i - 1].width, y , tex[i].width, tex[i].height, color); //宽度
}
else
{
texture2D.SetPixels32(x, y, tex[i].width, tex[i].height, color);
}
}
//应用
texture2D.Apply();
return texture2D;
}