最近在写一个自己的小项目,在项目中,我想写这么一个地图编辑器:
1.将游戏地图划分一个N个正方形格子
2.地图编辑器有分层功能,类似于PS的图层,在每一个图层上我可以设置指定的图片。
3.根据每个层图片,将其合并为一张图(每张图像素尺寸非固定的)
所以根据以上要求,我创建了如下的编辑器:

在以上的编辑器中,可以在笔刷面板添加图片,然后在层级面板添加新的层级,用来绘制新的图片。
那核心的问题就是,如何将多张图片合并为一张图片?
我想的方法以下几种方法:
1.使用shader ,但是shader 合并图片的数量有限,在限定最多合并数量的前提下,使用shader是一个不错的选择。
2.使用C# 代码合并,在这个项目,我打算使用这种方式来实现。在不考虑性能前提下,可以支持我将N张图片合并为一张图片。
3.使用PS这一类图片软件,将需要图片进行合并。(但明显不是我需要的)
明确了需求,也有了解决途径,接下里就得需要进行实现。

 public static Texture MergeTex(Texture2D[] texs){//图片数量小于1 则 直接返回nullif (texs.Length < 1) return null;//设定第一张图我们将要生成的图片尺寸Texture2D nTex = new Texture2D(texs[0].width,texs[0].height, TextureFormat.ARGB32,true);Color[] colors = new Color[nTex.width*nTex.height];for (int i = 0; i < texs.Length; i++){//合并像素数量不相等的情况下 长宽的比例float wRate = 1, hRate = 1;if (texs[i].width != nTex.width)wRate = texs[i].width / (float)nTex.width;if (texs[i].height != nTex.height)hRate = texs[i].height / (float)nTex.height;for (int w = 0; w < nTex.width; w++){for (int h = 0; h < nTex.height; h++){//做一个旋转,否则得到图片的朝向不正确Color color = texs[i].GetPixel((int)(h * hRate),(int)((w) * wRate));int index = w * nTex.width + h;if (colors[index] == null) {colors[index] = color;continue;}//如果当前像素的透明为不透名 则直接进行颜色替换if (color.a == 1)colors[index] = color;else //否则将rgb*透明度,进行颜色相加colors[index] = colors[index] + new Color(color.r * color.a, color.g * color.a, color.b * color.a);}}}nTex.SetPixels(colors);nTex.Apply();return nTex;}

实现效果:

在不同像素数量的图片合并下,可能会造成上层图片的失真现象。
注意,为了能读取图片的像素信息,需要在图片的Inspector中将Read/Write Enable 开启。

Unity用代码将多张图片合并为一张图片相关推荐

  1. android将两张图片合并为一张图片

    合成两张图片 通过canvas绘制合成 private Bitmap mergeBitmap(Bitmap firstBitmap, Bitmap secondBitmap) {int w1 = fi ...

  2. python怎样把两个图画到一起_python实现两张图片拼接为一张图片并保存

    本文实例为大家分享了python实现两张图片拼接为一张图片并保存的具体代码,供大家参考,具体内容如下 这里主要用Python扩展库pillow中Image对象的paste()方法把两张图片拼接起来 f ...

  3. python图像拼接_python实现两张图片拼接为一张图片并保存

    本文实例为大家分享了python实现两张图片拼接为一张图片并保存的具体代码,供大家参考,具体内容如下 这里主要用Python扩展库pillow中Image对象的paste()方法把两张图片拼接起来 f ...

  4. 基于python和Opencv将多张图片结合为一张图片的办法

    基于python和Opencv将多张图片结合为一张图片的办法 需要用到的python包 代码本体 这两天写结课论文,需要做一个好看一点的图,要把多张图片结合为同一张图片,本来想用ps,但是懒,干脆用代 ...

  5. python将两张图片拼接成一张图_python实现两张图片拼接为一张图片并保存

    本文实例为大家分享了python实现两张图片拼接为一张图片并保存的具体代码,供大家参考,具体内容如下 这里主要用Python扩展库pillow中Image对象的paste()方法把两张图片拼接起来 f ...

  6. Windows10 把两张图片合并成一张图片

    Windows10把两张图片合并成一张图片 文章目录 Windows10把两张图片合并成一张图片 1. 背景 2. "画图"实现多图拼接 1. 背景 相比截图功能,在 Google ...

  7. OpenCV将两图片进行混合,达到两张图片合并成一张图片的效果

    1.概述 案例:将两张图片混合成一张图片,并且原图的元素要保留到同一张图片中. 2.示例图片 2.1.混合后的图片 2.2.原始的两张图片 3.示例代码 //将两张图片进行混合 #include &l ...

  8. 练习 | 01 | 把多张图片合并成一张图片

    1 实现方式 1.1 第一种方案 import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.F ...

  9. python opencv2 将两张图片合并为一张

    转自 https://www.cnblogs.com/ailexy/p/6806622.html 在用python处理图像的时候,除了图片叠加和图片拼接两种情况之外,有时候还会碰到需要上下左右连接图片 ...

  10. Java 图片转PDF 与 4张图片合并为一张

    目录 效果图 调用工具 PDF转换工具类 图片合并工具类 效果图 测试类 BufferedImage image = QRCodeUtilEx.createImage("这是生成二维码的图片 ...

最新文章

  1. 高可用集群之RHCS
  2. 固态硬盘量产工具_固态硬盘怎么修复
  3. C语言归并排序Merge Sort算法(附完整源码)
  4. global与nonlocal关键字
  5. personalization icon is missing in UI
  6. 数据结构之结构体复习
  7. python读取文件夹下所有文件的名字_一键汇总同一文件夹下所有表格,三种小技巧分享给你...
  8. Spring-core-SpringFactoriesLoader类
  9. jquery叠加页片自动切换特效
  10. 将list中的数据组成用逗号分隔的字符串
  11. Java-JavaWeb—(4)MySQL数据库
  12. 将jmeter响应结果中部分数据保存到本地文件
  13. 大数据之Javase
  14. 获取电脑ip并输入微信发送
  15. latex:公式的序号
  16. vs2022安装详细
  17. 深度学习网络结构笔记----Depthwise卷积与Pointwise卷积--深度可分卷积-- GoogleNet,Xception,MobileNetv1--v3
  18. 趣图:大佬如何解决bug的
  19. CRMEB开源打通版,值得一试的免费商城
  20. Linux系统怎么使用扫描仪,Linux系统中Nmap扫描命令的使用方法 -电脑资料

热门文章

  1. 触发器、锁存器、边沿触发器——最容易理解的方式
  2. 查看Android手机CPU框架信息
  3. python-scrapy模拟登陆网站--登陆青果教务管理系统(二)
  4. 手机扫描识别Vin码识别
  5. excel等额本息计算房贷公式
  6. 【角度刁钻】如果把线程当作一个人来对待,秒懂
  7. Docker安装加速器
  8. 21届秋招美团一面面经[业务运营管理]
  9. 小程序超过2M限制的方法——分包加载
  10. 使用三目表达式的踩坑记录