0

我有一系列图表(.png 文件),我想将其中的四个放入 A4 页面并继续为我的其余图表执行此操作。是否有可能用 Python 做到这一点?

4

1 回答 1

6

如果您只是询问如何将四个图像平铺成一个更大的图像,那么大多数图像处理库都很容易做到这一点。

我将展示如何使用 PIL/ Pillow来做到这一点:

import sys
from PIL import Image

width, height = int(8.27 * 300), int(11.7 * 300) # A4 at 300dpi

images = sys.argv[1:]
groups = [images[i:i+4] for i in range(0, len(images), 4)]
for i, group in enumerate(groups):
    page = Image.new('RGB', (width, height), 'white')
    page.paste(Image.open(group[0]), box=(0, 0))
    page.paste(Image.open(group[1]), box=(int(width/2.+.5), 0))
    page.paste(Image.open(group[2]), box=(0, int(height/2.+.5)))
    page.paste(Image.open(group[3]), box=(int(width/2.+.5), int(height/2.+.5)))
    page.save('page{}.pdf'.format(i))

这意味着作为示例代码,而不是您问题的完整解决方案。一些警告:

  • 这会为每一页生成一个单独的 PDF 文件。
  • 我将 PNG 文件放在页面每个象限的左上角。我不知道你想把它们放在哪里,但可能不完全是这样。(许多打印机不能一直打印到页边距,即使可以打印,您通常也不希望它们打印。)
  • 我没有缩放图像,如果您的图表是 100x100 或 2000x2000,这可能是个问题。
  • 我假设你想以 300dpi 打印出来。
于 2013-10-08T00:55:23.533 回答