图片墙、照片墙,一键导出一键打印,形状拼图

选择图片目录一键布局照片墙、各种形状,支持导出保存和打印、支持照片位置调整一键C位,值得拥有

效果预览(资源中心下载)

图片

图片

图片

图片

图片

图片

2. 界面

区域 说明
顶部标题栏 自定义无边框标题栏,可拖动、双击最大化、边缘拖拽缩放;支持渐变色与渐变方向调整
工具栏 选择文件夹、重新排版、导出 PNG/JPG、打印预览、打印、​设为 C 位​、恢复原位、布局模式切换、缩放
左侧设置面板 页面、排版参数、形状、形状衬托、外观、输出、数据源、手动调整(C 位)、标题栏;可滚动
中间画布 A4 页面预览,可点选、拖放换位、缩放照片,可指定 C 位主图;底部翻页控件切换多页
底部状态栏 图片数量、页数、放置数量、扫描/首屏加载进度、手动调整与 C 位数量、导出进度

3. 三步出图

  1. 点「选择图片文件夹」,可勾选「包含子文件夹」,支持 jpg / png / bmp / gif / tif,损坏图片自动跳过。
  2. 在左侧调整纸张、间距、形状等参数,预览实时刷新(输入后约 0.2 秒生效)。
  3. 想突出某张照片,按第 6 节把它设为 C 位;最后点「导出 PNG」/「导出 JPG」选择输出目录,或点「打印预览 / 打印…」。

默认即 A4 纵向 210×297 mm、10 mm 页边距、心形轮廓 + 精确裁切,选完文件夹立刻能看到效果。

4. 排版模式

模式 说明 主要参数
等大网格 统一尺寸的行列网格,按面积自动算列数;整墙轮廓只在此模式生效 列数(0=自动)、单元格比例、照片间距
等高拼贴 每行高度一致、宽度按原图比例,行内铺满可用宽度 等高行高
等宽拼贴 瀑布流:列宽固定、高度按原图比例,每张放入当前最矮的列 等宽列宽、单格最大高度、列数

照片超出一页自动分页;底部翻页控件可逐页查看,导出时多页自动编号 名称_001、名称_002……

「照片适配」可选​填满裁剪​(无留白)或​完整显示​(不裁图但可能留白)。

4.1 加载多少张、怎么分到各页

  1. ​扫描​:读取文件夹(可勾选「包含子文件夹」)里所有支持格式的图片,只用 GDI+ 读图片头拿宽高(不解码像素),损坏的自动跳过;按「文件名 / 修改时间 / 随机」排序。这一步几百张只需几十毫秒,不是加载慢的原因。
  2. ​每页装多少​:等大网格下,列数默认按 √(照片数 × 内容宽 ÷ (内容高 × 单元格比例)) 估算;精确裁切模式为了让形状内部足够密,自动列数强制在 6-12 列。行数由内容高度与格子高度算出,每页格数 = 列数 × 行数。
  • 例:A4 纵向、10 mm 页边距、2 mm 间距、1:1 单元格、359 张 → 12 列 × 17 行 = ​204 格/页​。
  1. 页数 = 向上取整(照片数 ÷ 每页格数),照片按排序顺序依次填入每格。359 张 → ​2 页​。
  2. 最后一页不足时,若勾选「照片不足时循环填满形状」,会从头再取照片补齐,因此状态栏的**「已放置」可能大于照片数**(上例为 2 × 204 = ​408 次放置​,其中 49 次是重复填充)。取消勾选则末页留空。
  3. 精确裁切时形状外的格子仍存在,但会被形状曲线裁掉看不见;「拼贴成形状」则直接按格子中心筛掉形状外的槽位,每页格数变少、页数相应增加。

想改变每页密度:调「列数」「单元格比例」「照片间距」「页边距」或纸张尺寸;不想重复填充就关掉「照片不足时循环填满形状」。

4.2 图片多时的加载顺序(首屏优先)

扫描完成后​页面与形状版式立刻显示​,照片再分批填入:

  1. 先解码当前页真正看得见的照片(形状外的槽位跳过),状态栏显示「正在加载第 1 页… x/y 张」;
  2. 第一页就绪后提示「第 1 页已就绪」,后台继续预加载其它页和形状外的照片;
  3. 未就绪的格子显示淡色占位,缩略图到位后自动替换,期间界面可正常操作、翻页。

预览只生成 320 px 小图、限 1-3 张并发解码,刷新按 120 ms 合并;导出 PNG/JPG 与打印​始终读原图​,不受缩略图规格影响。第一张照片几乎立刻出现,第一页照片陆续在 1-3 秒内出齐(取决于原图尺寸),其余在后台补齐。

5. 整墙形状与衬托

  • 单格形状 7 种:矩形、圆角矩形、椭圆、菱形、六边形、星形、心形。
  • 整墙轮廓 6 种:矩形、椭圆、心形、星形、六边形、菱形。
  • 轮廓两种模式:
  • ​精确裁切​:照片铺满内容区后,用形状曲线整体裁剪,边缘平滑;照片不足时默认循环填满。
  • ​拼贴成形状​:按格子中心是否落在形状内筛出位置,方块照片拼出轮廓。
  • 两种模式都会把照片限制在形状路径内,避免方块溢出边界造成生硬感。​C 位主图例外​:默认完整显示,不被形状切掉一角。
  • 形状衬托由五层效果组成:柔和投影、淡色衬底、内侧羽化、轮廓外发光、主描边。颜色、宽度、范围均可调。

6. 手动调整:把重要照片放到 C 位(重点)

自动排版完成后,可以像网页拖拽排序那样​拖动照片调整位置​:拖到另一张上自动对调,拖到形状内空白就移到那一格,落点始终对齐网格。重要照片一路换到中心的 C 位(主图),次要照片换到边缘当陪衬,全程不会放歪。

这里说的「突出」指的是​视觉焦点与位置​,不是把照片做成立体凸出、也不是让它从形状边缘浮起来。

6.1 拖放换位(默认拖动方式,所见即所得)

拖动时​被拖照片的缩略图会直接贴在松手后真正会落到的格子上​;对调时还能同时看到另一张照片搬进原位置。预览画在哪,松手就落到哪,不会再出现「拖到 A、连到 B、照片却跑没了」。

行为 结果
拖到另一张可见照片上 两张​对调自动槽位​,都回到规整格子,永远对齐
拖到形状内空白(如心形尖端) 照片​移到那一格​,按网格量化自动对齐,原位置空出
拖到格子间隙 量化到最近的网格格子,按上一条处理
拖到 C 位主图上 被拖的照片接管 C 位,原主图退到它原来的格子
拖到形状外 / 页面外 / 拖回自己 光标显示红色禁止圈,松手回弹
拖动过程中 落点格子显示蓝框 + 照片缩略图 +「对调」/「放这里」标签;原格子画成虚线空位

空白落点按自动排版的网格步长(格子尺寸 + 间距)量化,所以​移到空白也不会歪​。形状模式下落点必须看得见才允许:形状外的照片会被曲线裁掉,因此给红色禁止提示并回弹,而不是悄悄换到别处。

如果确实想把照片摆到​任意非网格坐标​,按住 Alt 再拖动,或用方向键微调;歪了用右键「对齐这张到网格」拉回,或点工具栏「恢复原位」全部复位。

6.2 一键设为 C 位

先点选一张照片,然后任选一种方式:

操作 效果
双击照片 设为 C 位
按C键 设为 C 位
工具栏「设为 C 位」 设为 C 位
右键 →「设为 C 位(重要照片放中心)」 设为 C 位

执行后会发生四件事:

  1. 这张照片移到​内容区几何中心​,等比放大(默认 1.8 倍,可在左侧「手动调整(C 位)→ C 位放大倍数」调 1-3 倍);
  2. 它与​原本最靠近中心的照片交换位置​——被换下的照片回到它原来的格子,自然退到边上,画面不留空洞;
  3. 置于最上层并带一层淡投影,选中框上显示「C 位」小标签;
  4. ​每页只保留一张 C 位主图​,再给另一张设 C 位时,旧主图自动让位。

左侧「C 位主图不被轮廓裁切」默认开启,保证主图完整、不会被心形或星形切掉一角;关闭后所有照片(含主图)都严格留在形状内。矩形墙没有形状裁切,该开关会自动禁用。

​取消 C 位​:选中后按 Delete(恢复原位),或点工具栏「恢复原位」清空全部调整。

6.3 全部操作

操作 效果
左键点选照片 选中,显示蓝色边框与四个角点(右下角为实心蓝点)
左键拖到另一张照片上 两张自动对调槽位,始终对齐网格
左键拖到形状内空白 照片移到该格并自动对齐网格,原位置空出
左键拖到形状外 / 页面外 红色禁止圈,松手回弹
Alt + 左键拖动 自由移动到任意位置(可能不对齐,按需使用)
拖动右下角实心蓝点 等比缩放
Ctrl + 鼠标滚轮 以中心等比缩放选中照片
双击 /C键 设为 C 位
右键照片 菜单:设为 C 位 / 置于顶层 / 置于底层 / 放大 20% / 缩小 20% / 对齐这张到网格 / 恢复这张原位 / 恢复全部自动排版
点击空白处 /Esc 取消选中
方向键 每次移动 1 mm(自由微调,会脱离网格)
Shift + 方向键 每次移动 0.2 mm
Ctrl + 方向键 按网格跳到相邻格子(对调或移动),保持对齐
Delete/Backspace 恢复当前照片到自动排版位置,并取消它的 C 位

C 位主图仍可缩放微调、Alt+拖动改位置并保留主图身份;把它拖到普通照片上会让出 C 位(对方成为新主图),拖到空白则移到该格并取消 C 位,按 Delete 或改设别的主图也会取消。

6.4 次要照片靠边

  • ​把次要照片拖到边缘的某张照片上​,两张对调,它就到了边上且仍对齐网格(最推荐);
  • 右键「缩小 20%」/ Ctrl+滚轮向下缩小,让它退为陪衬;
  • 右键「置于底层」可降低层级;
  • 主图放大后会盖住中心附近的一圈小图,这是主视觉效果,调小「C 位放大倍数」可减少覆盖;被盖住的照片并未丢失,点「恢复原位」即可全部复原。

6.5 调整会保留到哪里

  • 按「页码 + 页内槽位」保存位置、尺寸、层级与 C 位标记;改纸张、边距、间距、列数、排版模式、点「重新排版」之后都会自动贴回,不会丢失。
  • ​导出 PNG / JPG、打印预览、实际打印全部保留手动调整​,所见即所得。
  • 页数变少时,超出的调整暂时不生效(不会被删除,页数恢复后仍会应用)。
  • 重新选择图片文件夹会清空调整。
  • 底部状态栏会显示「已手动调整 N 张 · 已设 M 张 C 位主图」。
  • Alt 自由拖动时照片可以贴到页面边缘,但中心会被限制在页面内,随时能拖回来;默认拖放(对调 / 移到空白)都在同一页内进行,暂不支持跨页。

7. 导出与打印

项 说明
格式 PNG(无损)/ JPG(质量 10-100,默认 92)
DPI 150 / 300 / 600;A4@300DPI = 2480×3508
文件名 单页名称.png;多页名称_001.png…,同名自动加序号不覆盖
打印 打印预览支持多页;打印对话框可指定打印机
内存保护 单页像素上限约 1.2 亿,超出时自动降 DPI

打印时建议保留 ≥8 mm 页边距,以避开打印机硬件不可打印区域。

8. 其它设置

分组 主要项
页面 A4 / A3 / A5 / Letter / 自定义尺寸、纵向或横向、页边距、照片间距、页眉标题
形状 单格形状、整墙轮廓、轮廓模式、圆角百分比、星形角数、轮廓内缩、循环填满
形状衬托 衬底颜色、投影范围、内侧羽化宽度、轮廓描边色与宽度、外发光开关
外观 照片白色描边、显示文件名、页面背景色、照片描边色
输出 导出文件名、DPI、JPG 质量
数据源 包含子文件夹、排序方式(文件名 / 修改时间 / 随机)
手动调整(C 位) C 位放大倍数(1-3 倍,默认 1.8)、C 位主图不被轮廓裁切
标题栏 渐变开关、渐变起始色、渐变结束色、渐变方向(左→右 / 右→左 / 上→下 / 下→上)

右上角「适应窗口」可切换 50% / 75% / 100% / 150% / 200% 缩放;放大后可用滚动条平移画布。

9. 常见问题

Q:图片一多,为什么等很久才看到照片,感觉一直加载不完? A:扫描本身很快(只读图片头,120 张实测 37 ms),瓶颈全在缩略图:① 旧版为每张照片生成 1000 px / 高质量双三次缩略图,必须先完整解码原图,实测 20 张约 1.4 秒,359 张单线程要二十多秒;② LRU 上限 ​180 张 < 359 张​​,预热一边生成一边淘汰,第一页刚显示的照片又被回收,下一次重绘又变回「载入中…」,看起来永远加载不完;③ 每生成 4 张就重绘整页(200+ 格 + 形状投影/羽化/描边),约 90 次全页重绘把 UI 线程拖死;④ 没有「第一页优先」,359 张全部排队解码。

现在:缩略图改成 ​320 px 双线性小图​(实测快 3.6 倍,首屏 60 张并发 1.1 秒 vs 旧规格 4.5 秒)+ 1-3 张并发;缓存容量按实际照片数自动扩容,​加载过程不淘汰​;​先只解码当前页看得见的照片​(形状外看不见的槽位排最后),再后台补其它页;刷新按 120 ms 合并,未就绪的格子画淡色占位。状态栏显示「正在加载第 1 页… x/y 张」进度。导出与打印仍读原图,画质不变。

Q:选了文件夹但预览是空白? A:确认目录内有受支持的图片格式;扫描进度与首屏加载进度都在状态栏显示。页面版式应该立刻出现,照片分批填入;若一直只有淡色格子,检查图片是否损坏或位于读取很慢的网络盘。

Q:拖来拖去放歪了、压住别的照片? A:默认拖动的落点一律按网格量化:拖到照片上是两张对调,拖到形状内空白是移到那一格,都严格对齐;形状外 / 页面外会显示红色禁止圈并回弹。只有按住 Alt 拖动、拖右下角蓝点缩放或按方向键才会脱离网格;用右键「对齐这张到网格」拉回单张,或点工具栏「恢复原位」全部复位。

Q:拖到 A,为什么照片跑到了 B / 松手后不知道去哪了? A:旧版会在空白时「吸附到最近的可见照片」,并用虚线连过去,鼠标位置与真实落点不一致。现在改成所见即所得:拖动时照片缩略图就贴在最终落点上(带蓝框和「对调」/「放这里」标签),松手后就在那个格子;不会再连到别处。形状外会让照片被裁掉看不见,因此直接禁止放置。

Q:把照片拖到心形尖端那片空白,为什么放不进去? A:形状模式下,轮廓外(以及尖端极窄处)的照片会被形状曲线裁掉,放过去也看不见,所以给红色禁止圈并回弹。心形内部的空白可以放:照片会按网格对齐移到那格并完整显示。若确实要摆到任意非网格坐标,按住 Alt 拖动或用方向键。

Q:双击怎么不是置顶了? A:双击现在是「设为 C 位」,这样安排主次最顺手;单纯置顶请用右键菜单。

Q:C 位主图盖住了周围照片? A:把「C 位放大倍数」调小(最低 1.0),或把主图稍微拖偏一点;被盖住的照片没有丢失,点「恢复原位」即可全部复原。

Q:导出后源图片能直接删除/改名吗? A:可以。程序读取时立即复制成独立位图并关闭文件流,不锁定源文件。

Q:手动调整在导出里没生效? A:确认底部状态栏显示「已手动调整 N 张 · 已设 M 张 C 位主图」。若显示 0,说明调整被「恢复原位」清空了。

Q:图片很多会不会占满内存? A:预览只缓存 320 px 的缩小位图(约 0.4 MB/张),不缓存整页大位图;一次加载会按实际照片数把 LRU 容量调大,避免预热途中把正在绘制的位图回收掉。导出时同一时刻只驻留一张原图。所有 GDI+ 对象均显式释放。

10. 示例

Samples/ 目录下有效果图可供参数参考:

  • 示例_心形精确裁切.png、示例_星形精确裁切.png、示例_心形拼贴_001.png、示例_等高拼贴.png、示例_等宽拼贴_001.png:实际导出的自动排版结果。
  • 示例_拖放预览_移到空白.png:拖到空白时的落点预览(蓝框 +「放这里」标签 + 照片缩略图),原格子画成虚线空位;松手后照片就在这个格子。
  • 示例_拖放预览_对调.png:拖到另一张照片上时的落点预览(蓝框 +「对调」标签),源格子同时显示另一张照片搬进来的样子。
  • 示例_C位主图.png:界面截图,展示中心 C 位主图、蓝色选中框、角点手柄与「C 位」标签。
  • 示例_C位导出.png:同一份排版的实际导出结果,中心大图完整显示、周围小图沿心形铺满作为陪衬。