C#合并文件夹图片列表 自定义排版顺序
本次程序编写主要为了将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=4x4
Bitmap 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效果

C#合并文件夹图片列表 自定义排版顺序的更多相关文章
- PDF 补丁丁 0.4.1.804 测试版发布:合并文件夹的图片和PDF文件,自由生成多层次书签
新的测试版增强了合并文件的功能,可以合并文件夹内的图片和PDF文件,还可以在合并文件列表上直接指定与合并文件对应的PDF书签标题.通过拖放文件项目生成多层次的PDF书签.如下图所示: 另外,新的测试版 ...
- 152-技巧-Power Query 快速合并文件夹中表格之自定义函数 TableXlsxCsv
152-技巧-Power Query 快速合并文件夹中表格之自定义函数 TableXlsxCsv 附件下载地址:https://jiaopengzi.com/2602.html 一.背景 在我们使用 ...
- windows合并文件夹窗口
windows合并文件夹窗口 CreateTime--2017年7月26日16:28:14Author:Marydon 右击任务栏-->属性-->任务栏按钮选项-->选择“始终合 ...
- Python win32com模块 合并文件夹内多个docx文件为一个docx
Python win32com模块 合并文件夹内多个docx文件为一个docx #!/usr/bin/env python # -*- coding: utf-8 -*- from win32com. ...
- Winform文件夹图片批量压缩整理修改
效果图: 窗体设计器生成的代码: namespace ImageCompact { partial class MainForm { /// <summary> /// 必需的设计器变量. ...
- android红米等关于读取本地文件夹图片获取路径的问题的解决
在Android开发中,有从本地文件夹中读取图片的功能,使用一下代码打开图片选择列表: Intent intent = new Intent(); intent.setAction(Intent. ...
- iOS-iOS 获取蓝色文件夹图片
Xcode创建的iOS项目内存在两种文件夹:Group(黄色, 伪文件夹) 和Folder(蓝色, 真文件夹): Group: Folder: Images.xcassets或Group文件夹内的PN ...
- Python - 调用接口合并文件夹下多个Excel表
在工作中经常遇到需要打开许多个excel表格,然后合并的需求,合并的同时要求格式必须原汁原味的保留.利用VBA代码可以比较轻松的解决,现在我们来看Python中如何实现. 上代码: from open ...
- 用 OUTLOOK VBA 生成 自定义文件夹 邮件列表
Option Explicit Sub TestFolder() 'Dim outlookapp, myitem, myfolder 'Dim mailcounts As Integer ' ' 'S ...
随机推荐
- 系统运维技巧(三)——利用dd命令临时增加交换分区
有时会遇到内存不够用的情况,可以使用本文提供的方法进行临时增加交换分区. #制作交换分区——得到文件 [root@serv01 linux-2.6.38]# dd if=/dev/zero of=/s ...
- JQuery模仿淘宝天猫魔盒抢购页面倒计时效果
1.效果及功能说明 通过对时间的控制来告诉用户一个活动还剩多少时间,精确到秒.2.实现原理 首先定义活动的截至的时间,要重年份精确到毫秒,在获得当前的年份到秒钟,在用截至时间,减去现在的时间,剩下的还 ...
- RHEL7系统修复rm -rf /boot /etc/fstab
RHEL7/Centos7系统发布这么长时间了,大家都知道这个系统的一个特点就是用systemctl代替了init系统守护进程,系统越来越模块化了.在新版的系统中许多的命令也发生了改变,grub也变为 ...
- Cognos配置oracle类型内容库时报错
Cognos初次安装,创建内容库为Oracle数据库类型的时候,报下面的错误 [Content Manager database connection][ ERROR ] The database c ...
- 在ubuntu下手机无法挂载的问题
在ubuntu下手机无法挂载的问题 , 原因之一是,usb数据线连接在了机箱前面,可以尝试连接到机箱后面的USB接口试试,我当时遇到过这样的情况,这样解决的.
- Android-Bundle认知、和Intent的差别
不时的回过头来看看自己的Andriod学习.实践之路,总发现有些曾经不明确的,如今清楚缘由.也会发现一些之前没怎么关注的.如今看到了 ,很想去深刻了解的. 比方:Bundle. 在一个Activity ...
- Carrer Day有感
2013年10月17日 一.永不放弃,痼疾必须自己克服,否则永远有阴影. 二.若长期无法取得进展,应该换一种方式. 大Boss确实有水平,答到点子上且照顾到听众面子,强.很多话掷地有声,发人深省,比如 ...
- Highstock生成股票K线图
在线演示 本地下载 使用HightStock生成股票K线图例子.
- 基于XMPP 协议的开发 android
设计过一款基于开源的XMPP即时通信协议的软件.採用C/S协议,通过GPRS无线网络用TCP协议到server.以架设开源的Openfire server作为即时通讯平台 系统主要由下面部分组成:一是 ...
- 翻译记忆软件-塔多思TRADO经典教程_4
SDL Trados是世界上最流行的计算机辅助翻译(CAT) 软件,在全球拥有20万多客户,全球500强企业有超过90%的公司都在使用SDL Trados来为日常的本地化翻译工作服务.我们的使命是以强 ...