Python 合并多张图片至一张图片

python,合并,多张,图片,一张 · 浏览次数 : 513

小编点评

**解决方法:** 1. **拆分 PDF 并存成图片:** - 使用 `pdfplumber` 库将 PDF 文件分解为多个图片文件。 - 每个图片文件仅包含一个页面。 2. **合并图片:** - 使用 `PIL` 库将多个图片文件合并成一个新的图片文件。 - 您可以使用 `orient` 参数指定图片方向(`horizontal` 或 `vertical`)。 **代码示例:** ```python import pdfplumber import PIL # 打开 PDF 文件 with pdfplumber.open("input.pdf", "rb") as pdf: # 获取 PDF 中所有页面 pages = pdf.pages # 创建一个新的图片对象 img = PIL.Image.new("RGB", (100, 100)) # 循环遍历页面并存入图片文件 for page in pages: # 创建一个新图片块 img_patch = page.extract_page(resize=True) img_patch = img_patch.resize((100, 100)) img.paste(img_patch, box=(0, 0)) # 将所有图片合并到新的图片中 merged_img = img.save("output.png") ``` **其他提示:** - 使用 `cv2` 库读取 PDF 文件。 - 确保所有图片文件具有相似的尺寸。 - 使用适当的图像压缩格式(例如 PNG)以减少文件大小。 **注意:** - 此代码需要安装 `pdfplumber` 和 `PIL` 库。 - 您需要将 `input.pdf` 替换为您实际的 PDF 文件名称。 - 此代码示例仅提供基本框架,您可以根据需要进行调整。

正文

PDF 有多页,一次性转成JPG 图片,JAVA 报内存溢出,
现改为,每一页存成一张图片,然后再将多张图片合成一张图片。

安装库

pip3 install Image -i https://pypi.tuna.tsinghua.edu.cn/simple

cv2.imread()不支持中文路径, 如果有中文读出来会是 None
如报:Expected Ptrcv::UMat for argument 'img' 内存溢出,图片太多或太大

# coding=utf-8
from PIL import Image
import cv2
import numpy as np


def merge(img_array, direction="horizontal", gap=0):
    img_array = [Image.fromarray(img) for img in img_array]
    w, h = img_array[0].size
    if direction == "horizontal":
        result = Image.new(img_array[0].mode, ((w + gap) * len(img_array) - gap, h))
        for i, img in enumerate(img_array):
            result.paste(img, box=((w + gap) * i, 0))
    elif direction == "vertical":
        result = Image.new(img_array[0].mode, (w, (h + gap) * len(img_array) - gap))
        for i, img in enumerate(img_array):
            result.paste(img, box=(0, (h + gap) * i))
    else:
        raise ValueError("The direction parameter has only two options: horizontal and vertical")
    return np.array(result)


if __name__ == '__main__':
    img_list = []
    for i in range(0, 10):
        img = cv2.imread("D:\\Users\\Pictures\\4\\%s.PNG" % (i + 1))
        img_list.append(img)
    img = merge(img_list, "vertical")
    cv2.imwrite("MergeImage.png", img)

源图
image
合并后的图
image

与Python 合并多张图片至一张图片相似的内容:

Python 合并多张图片至一张图片

PDF 有多页,一次性转成JPG 图片,JAVA 报内存溢出, 现改为,每一页存成一张图片,然后再将多张图片合成一张图片。 安装库 pip3 install Image -i https://pypi.tuna.tsinghua.edu.cn/simple cv2.imread()不支持中文路径,

#Python 利用pandas 合并csv/xlsx文件

上次我们分享了利用powerquery来合并文件进行数据分析,但是Pq有一部分局限性,在现实工作中,我们往往需要合并多个文件去处理数据, 如果面对20个甚至更多的文件,pq中的每一步的步骤都会去读取每个文件,运行速度会十分慢,那么有没有简单的解决方法吗? 答案是:可以考虑合并成一个文件后来处理。 我

Python自动合并Word文件同时添加分页符的方法

本文介绍基于Python,实现对多个Word文档加以自动合并,并在每次合并时按要求增添一个分页符的方法~

#Python 利用pivot_table,数据透视表进行数据分析

前面我们分享了,利用python进行数据合并和连接,但是工作中,我们往往需要对数据进一步的聚合或者运算,以求最后的数据结果。 今天我们就来学习一下利用pandas模块,对数据集进行数据透视分析。 pivot_table释义 1.1 pivot_table参数列表: pandas.pivot_tabl

NumPy 数组迭代与合并详解

NumPy 数组迭代 NumPy 数组迭代是访问和处理数组元素的重要方法。它允许您逐个或成组地遍历数组元素。 基本迭代 我们可以使用 Python 的基本 for 循环来迭代 NumPy 数组。 一维数组迭代: import numpy as np arr = np.array([1, 2, 3,

【pandas小技巧】--日期相关处理

日期处理相关内容之前`pandas基础`系列中有一篇专门介绍过,本篇补充两个常用的技巧。 # 1. 多列合并为日期 当收集来的数据中,年月日等信息分散在多个列时,往往需要先合并成日期类型,然后才能做分析处理。合并多列转换为日期类型,可以直接用 `to_datetime`函数来处理: ```pytho

超越datetime:Arrow,Python中的日期时间管理大师

介绍 Arrow是一个Python库,它提供了一种合理且对人类友好的方法来创建、操作、格式化和转换日期、时间和时间戳。它实现了对datetime类型的更新,填补了功能上的空白,提供了一个智能的模块API,支持许多常见的创建场景。简单来说,它可以帮助您使用更少的导入和更少的代码来处理日期和时间。 Ar

我从 Python 潮流周刊提取了 800 个链接,精选文章、开源项目、播客视频集锦

你好,我是豌豆花下猫。前几天,我重新整理了 Python 潮流周刊的往期分享,推出了第 1 季的图文版电子书,受到了很多读者的一致好评。 但是,合集和电子书的篇幅很长,阅读起来要花不少时间。所以,为了方便大家阅读,我打算将合集进一步整理,分门别类将原始内容的标题罗列出来。 本文总计约 800 个链接

Python提取文本文件(.txt)数据的方法

本文介绍基于Python语言,遍历文件夹并从中找到文件名称符合我们需求的多个.txt格式文本文件,并从上述每一个文本文件中,找到我们需要的指定数据,最后得到所有文本文件中我们需要的数据的合集的方法~

Python潮流周刊的优惠券和精美电子书(EPUB、PDF、Markdown)

Python潮流周刊从 2023.05.13 连载至今,本周即将发布第 60 期,这意味着我们又要达成一个小小的里程碑啦! 每周坚持做分享,周复一周,这对自己的精力和意志是一项不小的挑战。于是,为了让自己获得一些仪式感,我给自己定了一个较为合理的时间目标,就是每 30 期周刊作为一季。 划分出“每一