本次程序编写主要为了将pdf word等文档转换为图片后设置不同的打印排版

前提 目标文件夹中的图片高宽都是一致的

        /// <summary>/// 合并图片/// </summary>/// <param name="savedictory">文件保存目录</param>/// <param name="singlePageNumber">单页排版</param>/// <param name="path">文件列表</param>/// public static void MergedImage(string[] path, SinglePageNumber singlePageNumber,string savedictory){//获取目录路径列表var i = path.Length % (int)singlePageNumber > 0 ? (path.Length / (int)singlePageNumber + 1) : path.Length / (int)singlePageNumber;for (int s = 0; s < i; s++){List<Bitmap> bitmapList = new List<Bitmap>();List<string> imgPathTake = path.Skip((s - 1) * (int)singlePageNumber).Take((int)singlePageNumber).ToList();foreach (var pathItem in imgPathTake)bitmapList.Add(new Bitmap(pathItem));//2=1x2 4=2x2 6=2x3 9=3x3 16=4x4Bitmap map = null;switch (singlePageNumber){case SinglePageNumber.two:map = mergeImage(2, 1, bitmapList);break;case SinglePageNumber.four:map = mergeImage(2, 2, bitmapList);break;case SinglePageNumber.six:map = mergeImage(3, 2, bitmapList);break;case SinglePageNumber.nine:map = mergeImage(3, 3, bitmapList);break;case SinglePageNumber.Sixteen:map = mergeImage(4, 4, bitmapList);break;default:break;}map.Save(savedictory + "\\" + s+".png");}}/// <summary>/// 合并图片文件 传入的图片宽高要一致/// </summary>/// <param name="wi">一排有几张</param>/// <param name="hi">一列有几张</param>/// <param name="mapList"></param>public static Bitmap mergeImage(int wi, int hi, List<Bitmap> mapList){int width = mapList.First().Width;int height = mapList.First().Height;Bitmap bitmap = new Bitmap(width * wi, height * hi);//x表示图片在第几行y表示图片在第几列 int mapIndex = 0;for (int y = 1; y <= hi; y++){for (int x = 1; x <= wi; x++){if (mapIndex == mapList.Count ){foreach (var item in mapList)item.Dispose();return bitmap;}var map = mapList[mapIndex];mapIndex++;for (int w = 1; w <= width; w++)for (int h = 1; h <= height; h++){var color = map.GetPixel(w - 1, h - 1);bitmap.SetPixel(((x-1)*width)+w - 1, ((y - 1) * height) + h - 1, color);}}}foreach (var item in mapList)item.Dispose();return bitmap;}

    /// <summary>/// 每版打印几页 单页的不用处理/// </summary>public enum SinglePageNumber{two = 2,four = 4,six = 6,nine = 9,Sixteen = 16,}

  

  

设置图片排版为2*3的效果

     string dictory = @"D:\test\testpdf2convert\";string[] path = System.IO.Directory.GetFiles(dictory);ImagePrintHp.MergedImage(path, SinglePageNumber.six, dictory);

  效果

2*2效果

转载于:https://www.cnblogs.com/ProDoctor/p/7691575.html

C#合并文件夹图片列表 自定义排版顺序相关推荐

  1. 2014Android Demo源码 文件夹 PATH 列表

    360网盘地址:http://yunpan.cn/QTptFRNMIJpeQ访问密码 3814 文件夹 PATH 列表 卷序列号为 5F005353 000A:8F50 E:. │  javaapk. ...

  2. 【Python】多文件夹图片重命名

    Python多文件夹图片重命名 1.目的 2.多文件夹代码 3.单文件代码 4.结果 1.目的 需要对多个文件夹中的图片进行重新命名 2.多文件夹代码 import ospath = 'D:\\img ...

  3. pandas合并文件夹下的excel文件

    研究背景: 由于工作中每天需要计算遗留工单,但工单创建的时间不确定,需要导出近半年的数据进行筛选,而系统一次只能到处一个月的数据,格式为excel格式文件,文件大学为10MB左右,每个文件数据量2万行 ...

  4. 合并文件夹内所有Excel文件(目前仅限于合并单层文件夹,如果文件夹下面有文件夹,暂未加入此功能,默认合并所有文件的所有Sheet)优化文件名_变更为:文件夹名字 + 合并的文件-(xls+xlsx)

    几经修改,终于算是成为自己较为满意的一个VBA程序(2020-6-6修正) 然,因个人才疏学浅,如有疏漏,希望各位前辈多多指正~在下先行谢过~ 1.考虑到Excel新建Sheet的命名规则 2.考虑到 ...

  5. 间隔定时拍照摄像头FTP上传文件夹图片命名规则

    自定义路径命名: F:\FTP服务器\20211116\images F:\FTP服务器:选择保存的磁盘.文件夹 20211116:自定义创建文件夹的年月日 Images:自定义保存图片的文件夹 FT ...

  6. mac怎么合并两个容器_Mac怎么合并文件夹?macz不容错过的苹果mac教程分享

    关于合并文件夹,与Windows操作不同的是:Mac中很可能会出现文件丢失. 因为它对相同名称文件的实际操作是替换而不是另命名复制!你的Mac电脑是否有重复文件想要合并?想了解Mac电脑合并文件夹而不 ...

  7. PHP 八羊闪电本地相册图片查看器V1 PHP极简代码直接查看本地文件夹图片 源码下载!

    该源码,直接读取本地IMGAGES文件夹的图片,直接显示在相册,点击放大查看,非常方便,非常适合二次开发,但是不适合小白.没有做UI和设计,比较简陋,所以仅仅售价10元钱,想要的就拿去,不想要的就别拍 ...

  8. python打不开xls文件,wps下用vba实现合并文件夹中所有excel文件

    python打不开xls文件,用wps下vba解决问题 用了常用的三种python读写xls文件的方法都报错 xlrd openpyxl pandas 原因 解决方法 用vba实现合并文件夹中所有ex ...

  9. 自己动手实现文件文件夹树列表选择框(xingyun86源码)

    今日无聊,在网上看到一份不错的文件文件夹树列表控件,于是下载编译了一下. 修复了部分点击崩溃的bug及部分逻辑的优化. 下载地址: http://www.ppsbbs.tech/thread-277. ...

最新文章

  1. 科大星云诗社动态20210905
  2. java修改title_js修改title
  3. 存储过程 传 datatable
  4. 【.NET Core项目实战-统一认证平台】第六章 网关篇-自定义客户端授权
  5. java程序服务不能启动不了_JavaService.exe注册的windows服务无法启动问题
  6. 我的世界之 paper和spigot 的区别 Java服务端开服
  7. ant design中Button与button点击事件
  8. guacamole开发者文档——数据库认证
  9. C#PC与三菱Q系列PLC通信小实验中遇到的问题
  10. 【JavaWeb】之Tomcat介绍、安装与使用
  11. 爬虫——bs4测试——test.html
  12. imp导入时 出现IMP-00017:由于 ORACLE 错误 6550, 以下语句失败: 解决方法
  13. Linux 环境保存【终端打印信息】到特定文件
  14. SSR(服务端渲染)于CSR(客户端渲染)
  15. 微信小程序零基础入门(上)
  16. win7删除系统自带中文简体输入法中美式键盘
  17. 街机扫描线之校正屏幕色彩与对比度
  18. 企业BI智能大屏,除了页面炫酷,还能带来什么?
  19. e影浏览器怎么样e影浏览器下载
  20. 飞利浦、阿特拉斯科普柯、壳牌、IBM、斯凯奇、乐高、希尔顿等外企在中国 | 美通社头条...

热门文章

  1. 计算机网络工程本科培养计划,网络工程专业卓越计划本科培养方案2015版-西安电子科技大学计算机.doc...
  2. 全量备份,增量备份,差异备份
  3. 解决redis-cli连接时出现Could not connect to Redis at 127.0.0.1:6379: Connection refused
  4. 华为帐号忘记显示服务器繁忙,显示云服务器繁忙怎么操作
  5. 数据库技术基础:常见基本模型介绍笔记
  6. ASP.NET MVC ActionFilter自定义过滤器异常过滤器过滤器用法
  7. java 类型转换方法_java数据类型转换的常见方法
  8. linux fmt命令
  9. python 链表 【测试题】
  10. java中的equals用法