当前位置:   article > 正文

Unity-两张图片叠加合成一张图片_unity 贴图叠加合并

unity 贴图叠加合并

在做图片分享时,往往需要对图片加上水印或其他标签图片,这个时候就要考虑如何对多张图片进行叠加合成为一张图片。

其实一张图片就是一组单色像素组成的像素矩阵

要对两张图片进行叠加,只需要将背景图片中对应的像素颜色,替换成另一张图片的像素颜色就行了。

下面以截屏并添加二维码标签为例

       public void CaptureScreenShot()

{

StartCoroutine(CaptureCoroutine());

}

private IEnumerator CaptureCoroutine()
{  
    
yield return new WaitForEndOfFrame();  
   
//截取当前屏幕

Rect rect = new Rect(0, 0, Screen.width, Screen.height);
Texture2D  texture = new Texture2D((int)rect.width, (int)rect.height, TextureFormat.RGB24, false); 
texture.ReadPixels(rect, 0, 0);  
    
texture.Apply();

//将另一张二维码图片的像素替换到截屏图片上(位置右上角)
Texture2D textureQrCode = Resources.Load<Texture2D>("Texture/qrcode");

for (int x = 0; x < textureQrCode.width; x++)
    
{
        
    for (int y = 0; y < textureQrCode.height; y++)
        
    {

        texture.SetPixel(texture.width - x, texture.height - y, textureQrCode.GetPixel(x, y));
    }
    
}

texture.Apply();

//保存图片到本地
File.WriteAllBytes(Application.streamingAssetsPath+"/Capture.png",texture.EncodeToPNG());
}  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

这里主要使用Texture2Dd的SetPixel和GetPixel方法。SetPixel(int,int,Color)前两个参数为贴图像素的位置(x,y),第三个参数为像素颜色值。

在这里插入图片描述
、这里二维码图片和截屏图片叠加合成为了一张图片

需要注意的是,unity默认导入的图片可能为sprite类型,如果我们要操作texture类型的图片,需要在图片的ImportSettings中将TextureType设置为Default并勾选上Read/WriteEnable选项。
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/98058
推荐阅读
相关标签
  

闽ICP备14008679号