本次程序编写主要为了将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#合并文件夹图片列表 自定义排版顺序的更多相关文章

  1. PDF 补丁丁 0.4.1.804 测试版发布:合并文件夹的图片和PDF文件,自由生成多层次书签

    新的测试版增强了合并文件的功能,可以合并文件夹内的图片和PDF文件,还可以在合并文件列表上直接指定与合并文件对应的PDF书签标题.通过拖放文件项目生成多层次的PDF书签.如下图所示: 另外,新的测试版 ...

  2. 152-技巧-Power Query 快速合并文件夹中表格之自定义函数 TableXlsxCsv

    152-技巧-Power Query 快速合并文件夹中表格之自定义函数 TableXlsxCsv 附件下载地址:https://jiaopengzi.com/2602.html 一.背景 在我们使用 ...

  3. windows合并文件夹窗口

      windows合并文件夹窗口 CreateTime--2017年7月26日16:28:14Author:Marydon 右击任务栏-->属性-->任务栏按钮选项-->选择“始终合 ...

  4. Python win32com模块 合并文件夹内多个docx文件为一个docx

    Python win32com模块 合并文件夹内多个docx文件为一个docx #!/usr/bin/env python # -*- coding: utf-8 -*- from win32com. ...

  5. Winform文件夹图片批量压缩整理修改

    效果图: 窗体设计器生成的代码: namespace ImageCompact { partial class MainForm { /// <summary> /// 必需的设计器变量. ...

  6. android红米等关于读取本地文件夹图片获取路径的问题的解决

    在Android开发中,有从本地文件夹中读取图片的功能,使用一下代码打开图片选择列表: Intent intent = new Intent();   intent.setAction(Intent. ...

  7. iOS-iOS 获取蓝色文件夹图片

    Xcode创建的iOS项目内存在两种文件夹:Group(黄色, 伪文件夹) 和Folder(蓝色, 真文件夹): Group: Folder: Images.xcassets或Group文件夹内的PN ...

  8. Python - 调用接口合并文件夹下多个Excel表

    在工作中经常遇到需要打开许多个excel表格,然后合并的需求,合并的同时要求格式必须原汁原味的保留.利用VBA代码可以比较轻松的解决,现在我们来看Python中如何实现. 上代码: from open ...

  9. 用 OUTLOOK VBA 生成 自定义文件夹 邮件列表

    Option Explicit Sub TestFolder() 'Dim outlookapp, myitem, myfolder 'Dim mailcounts As Integer ' ' 'S ...

随机推荐

  1. 网络编程socket之listen函数

    摘要:listen函数使用主动连接套接口变为被连接套接口,使得一个进程可以接受其它进程的请求,从而成为一个服务器进程.在TCP服务器编程中listen函数把进程变为一个服务器,并指定相应的套接字变为被 ...

  2. Windows 下Npm和NodeJS升级

    前提电脑中已经安装过NodeJS, npm.现在需要进行升级操作. 1.查看当前的npm和NodeJs的版本: C:\Users\Administrator>node -vv4.4.3 C:\U ...

  3. Largest Rectangle in Histogram leetcode java

    题目: Given n non-negative integers representing the histogram's bar height where the width of each ba ...

  4. win7+iis7+asp+.net+php环境配置

    一.我们先来配置一下iis: f 1. 点击[開始]->[控制面板]->点击[程序和功能]进入下一步 2. 然后,在左側点击[打开或关闭Windows功能].然后会跳出来一个框 3. 開始 ...

  5. 如何在Ubuntu 16.04中创建GIF动图

    导读 FFmpeg 是一款开源的音.视转换器,使用 FFmpeg 我们可以非常容易地转换和录制音视频文件,而 ImageMagick 是一款用于创建.编辑和合并位图图像的一款开源软件. 大家经常在新浪 ...

  6. COM中的几个基本概念

    类厂 组件结构示例 DllGetClassObject COM库与类厂的交互

  7. GG配置ggmgr进程

    Oracle配置mgr进程 edit params mgr port 7809 syslog none dynamicportlist 7810-7820 自己主动会生成./dirprm/mgr.pr ...

  8. 【android】模拟点击某个指定坐标作用在View上

    /** * 模拟点击某个指定坐标作用在View上 * @param view * @param x * @param y */ public void clickView(View view,floa ...

  9. Java从零开始学十(Arrays类对数组的常用方法)

    一.Arrays类常用方法 二.简单例子 package com.pb.demo1; import java.util.Arrays; /* * Arrays工具类的中的几个常用方法 * 1.copy ...

  10. linux的fork()函数-进程控制

    进程作为构成系统的基本细胞,不仅是系统中独立活动的实体,而且是独立竞争资源的基本实体.它要经历创建.执行.等待.终止等一系列过程. 一.fork入门知识(转载) 一个进程,包括代码.数据和分配给进程的 ...