使用python将一系列图像放入一个A4页面

Amy*_*lee 0 python png image

我有一系列图表(.png 文件),我想将其中四个放入 A4 页面,然后继续为其余图表执行此操作。可以用 Python 做到吗?

aba*_*ert 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))
Run Code Online (Sandbox Code Playgroud)

这是示例代码,而不是您问题的完整解决方案。一些注意事项:

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