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提取文本文件(.txt)数据的方法

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

2.0 Python 数据结构与类型

数据类型是编程语言中的一个重要概念,它定义了数据的类型和提供了特定的操作和方法。在 python 中,数据类型的作用是将不同类型的数据进行分类和定义,例如数字、字符串、列表、元组、集合、字典等。这些数据类型不仅定义了数据的类型,还为数据提供了一些特定的操作和方法,例如字符串支持连接和分割,列表支持排序和添加元素,字典支持查找和更新等。因此,选择合适的数据类型是 python 编程的重要组成部分。

[转帖]redis list类型介绍

redis list类型介绍 要阐述redis的list数据类型,最好以一些理论开始,因为list术语在信息化众多技术中用的并不合适,如: 如Python中的list并不是链表结构,而是数组(同样的数据结构在Ruby语言中叫Array)。 以通常的观点来看,List仅仅是一个有序的元素序列:10,2