精华内容
下载资源
问答
  • Python 图片合并 pdf

    2020-11-17 10:03:33
    最近需要将记的笔记整理成一个 pdf 进行保存,所以就研究了一下如何利用 Python 代码将拍下来的照片整个合并成一个 pdf。 2.过程 拿到一个需求最重要的就是将大块任务拆分成一个个小模块,逐个击破。 2.1拍照 这...

    1.缘起

    最近需要将记的笔记整理成一个 pdf 进行保存,所以就研究了一下如何利用 Python 代码将拍下来的照片整个合并成一个 pdf。

    2.过程

    拿到一个需求最重要的就是将大块任务拆分成一个个小模块,逐个击破。

    2.1拍照

    这一步首先是将所有的书页拍好,需要注意的是要按照书的页码来拍,因为后面的排序是按照文件名进行排序的,拍照的文件名基本上是按照时间生成的,如果拍的时候乱了,到时候生成的 pdf 里面的页码也会乱掉。

    2.2 Python 操作库

    Python 最好的地方就是有大量的第三方库能帮我们快速实现我们想要的方法,搜索到了两个库,

    PyFPDF 和img2pdf,我们这里选择img2pdf来完成我们的需求

     

    pip install img2pdf

     

    2.3 Python遍历文件夹获取图片

     

        dirname = "f:/wlzcool"
        imgs = []
        for fname in os.listdir(dirname):
            if not fname.endswith(".jpg"):
                continue
            path = os.path.join(dirname, fname)
            if os.path.isdir(path):
                continue
            imgs.append(path)

    需要注意图片的文件名如果是纯数字且位数不一样,排序会为1之后是10而不是2,需要对数字进行一个额外的排序,如果是手机拍的文件就没有这个问题。

    files.sort(key=lambda x: int(x[:-4]))

    2.4 旋转图片展示方向并压缩像素

    有的时候手机拍出来的图片是水平的,需要将其改为竖直的

    用rotate旋转方向的时候需要注意加上expand=True 这个参数,否则会有黑边出现。

    手机的照片像素太高,有的需要进行压缩以保证最后生成的pdf的大小适中。

     

     

        img = Image.open(path)    
        if img.size[0] > img.size[1]:
            im_rotate = img.rotate(90, expand=True)
            size = (int(im_rotate.size[0] / 3), int(im_rotate.size[1] / 3))
            im_rotate = im_rotate.resize(size)
            im_rotate.save(savepath, quality=95)
        else:
            size = (int(img.size[0] / 3), int(img.size[1] / 3))
            img = img.resize(size)
            img.save(savepath, quality=95)

     

     

     

     

    2.5 整体代码

    写成脚本需要考虑的有很多,为了方便使用,需要将各种参数改为允许用户输入的。比如图片文件夹所在的路径,压缩比之类的

     

     

    from PIL import Image
    import os
    import img2pdf
     
    flag = False
    while not flag:
        dirname = input("请输入图片文件夹所在路径(例如d:/wlzcool):")
        flag = os.path.exists(dirname)
        if not flag:
            print("图片文件夹所在路径不存在!")
    saveflag = False
    while not saveflag:
        savedirname = input("请输入目标图片文件夹所在路径(例如d:/wlzcool2):")
        saveflag = os.path.exists(savedirname)
        if not saveflag:
            print("图片文件夹所在路径不存在!")
            automakedir = input("是否自动创建对应文件夹?(是Y/否N):")
            if automakedir.strip().upper() == "Y":
                os.makedirs(savedirname)
                saveflag = True
    files = os.listdir(dirname)
    reductionFactor = int(input("请输入长宽压缩比(例如3):"))
    if reductionFactor <= 0:
        reductionFactor = 3
    isConvertBlack = input("是否输出黑白版本?(是Y/否N):").strip().upper() == "Y"
    for fname in files:
        if not fname.endswith(".jpg"):
            continue
        path = os.path.join(dirname, fname)
        savePath = os.path.join(savedirname, fname)
        if os.path.isdir(path):
            continue
        img = Image.open(path)    
        if img.size[0] > img.size[1]:
            im_rotate = img.rotate(90, expand=True)
            size = (int(im_rotate.size[0] / reductionFactor), int(im_rotate.size[1] / reductionFactor))
            im_rotate = im_rotate.resize(size)
            if isConvertBlack:
                im_rotate = im_rotate.convert("L")
            im_rotate.save(savePath, quality=95)
        else:
            size = (int(img.size[0] / reductionFactor), int(img.size[1] / reductionFactor))
            img = img.resize(size)
            if isConvertBlack:
                img = img.convert("L")
            img.save(savePath, quality=95)
    filename = input("请输入输出文件名(例如:第一章):")
    with open(filename + ".pdf", "wb") as f:
        imgs = []
        files = os.listdir(savedirname)
        for fname in files:
            if not fname.endswith(".jpg"):
                continue
            path = os.path.join(savedirname, fname)
            if os.path.isdir(path):
                continue
            imgs.append(path)
        f.write(img2pdf.convert(imgs))

     

     

    2.6将脚本打包成exe

    不是所有的电脑都有Python环境,我们需要将脚本打包成exe方便在任意一台电脑上使用。

    使用 PyInstaller 来进行脚本的打包

    2.6.1 安装 PyInstaller

    pip install pyinstaller
    
     

    2.6.2 打包脚本

    在脚本所在的路径的cmd中执行以下命令即可

     

    pyinstaller -F imgtopdf.py

     

     

    人生苦短,我用 Python,强大的第三方库可以令我们省掉不少时间开发一个很有意思的 Python图片合并 pdf 的小应用,Python 就是很酷!

    欢迎关注我的公众号:临时营地,获得最新文章

     

    展开全文
  • 做项目,需要对公司财报做OCR,首先数据集,就得...def pyMuPDF_fitz(pdfPath, imagePath,i): # PDF路径 保存图片路径 PDF编号 startTime_pdf2img = datetime.datetime.now() # 开始时间 # print("imagePath=" + ima

    做项目,需要对公司财报做OCR,首先数据集,就得从财报pdf中截取图片了。

    import datetime
    import random
    import os
    
    import fitz  # fitz就是pip install PyMuPDF
    
    def pyMuPDF_fitz(pdfPath, imagePath,i):  # PDF路径 保存图片路径 PDF编号
        startTime_pdf2img = datetime.datetime.now()  # 开始时间
    
        # print("imagePath=" + imagePath)
        pdfDoc = fitz.open(pdfPath)
        for pg in range(pdfDoc.pageCount):
            page = pdfDoc[pg]
            rotate = random.uniform(-0.8,0.8) # 页面旋转随机角度
            # 每个尺寸的缩放系数为1.3,这将为我们生成分辨率提高2.6的图像。
            # 此处若是不做设置,默认图片大小为:792X612, dpi=96
            # zoom_x = 1.33333333  # (1.33333333-->1056x816)   (2-->1584x1224)
            # zoom_y = 1.33333333
            zoom_x = 5 # 修改该参数可以改变像素
            zoom_y = 5
            mat = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
            pix = page.getPixmap(matrix=mat, alpha=False)
    
            if not os.path.exists(imagePath):  # 判断存放图片的文件夹是否存在
                os.makedirs(imagePath)  # 若图片文件夹不存在就创建
    
            pix.writePNG(imagePath + '/' + 'image{}_{}.png'.format(i,pg))  # 将图片写入指定的文件夹内
                                                           # 第i张pdf的第pg页
    
        endTime_pdf2img = datetime.datetime.now()  # 结束时间
        # print('pdf2img时间=', (endTime_pdf2img - startTime_pdf2img).seconds)
    
    
    if __name__ == "__main__":
        path = r'.\pdf' # 路径
        n = len(os.listdir(path))
        print('共有{}张PDF'.format(n))
        i=1
        for filename in os.listdir(path):
            # 1、PDF地址
            pdfPath = path+'/'+filename
            # 2、需要储存图片的目录
            imagePath = './imgs'
            pyMuPDF_fitz(pdfPath, imagePath,i)
            print('已处理{}张PDF,剩余{}张PDF'.format(i,(n-i)))
            i=i+1

    缺什么库自行安装。调大zoom_x 和zoom_y 可以提高图片清晰度。

    该程序功能,是将放在.\pdf路径文件夹下的所有pdf文件,每页都转成一张图片,保存在./imgs文件夹下。
    在这里插入图片描述

    程序是冯佬写的,这里容小弟膜拜一下。

    展开全文
  • Python matplotlib 以pdf形式保存图片

    万次阅读 2019-03-02 11:04:21
    import matplotlib.pyplot as plt...from matplotlib.backends.backend_pdf import PdfPages pdf = PdfPages('des_file_name.pdf') plt.figure() plt.hist(data) plt.tight_layout() print 'savefig...' pdf.save...
    import matplotlib.pyplot as plt 
    from matplotlib.backends.backend_pdf import PdfPages
    
    # short version
    plt.plot(range(10))
    plt.savefig('plot.pdf')
    
    
    # long version
    pdf = PdfPages('des_file_name.pdf')
    
    plt.figure()
    plt.hist(data)
    plt.tight_layout()
    
    print 'savefig...'
    pdf.savefig()
    plt.close()
    pdf.close()
    

     

     
    展开全文
  • python操作图片批量保存PDF文件

    千次阅读 2021-03-17 17:23:25
    就是把一个一个图片获取下来,并把图片拼接成一个PDF文档。 代码如下: #-*-coding:utf-8-*- """ CreatedonMonMar809:50:582021 @author:zm """ importrequests fromfpdfimportFPDF fromPILimportImage importos ...

    有个脚本需求:

    就是把一个一个图片获取下来,并把图片拼接成一个PDF文档。

    代码如下:

    # -*- coding: utf-8 -*-
    """
    Created on Mon Mar  8 09:50:58 2021
    @author: zm
    """
    import requests
    from fpdf import FPDF
    from PIL import Image
    import os
    import re
    os.chdir('C:/Users/Administrator/Desktop/33/')
    
    def makePdf(pdfFileName, listPages):
        listPages = sorted(listPages,key=lambda i:int(re.match(r'(\d+)',i).group()))
        cover = Image.open(listPages[0])
        width, height = cover.size
        pdf = FPDF(unit = "pt", format = [width, height])
        for page in listPages:
            print(page)
            pdf.add_page()
            pdf.image(page, 0, 0)
        pdf.output(pdfFileName, "F")
    
    def CMB():
        for i in range(1,15):
            url='http:xxxxx?n=p'+ str(i)+'.img' #自己的图片地址
            response = requests.get(url)
            with open('C:/Users/Administrator/Desktop/33/'+str(i)+'.jpg','wb') as f:
                f.write(response.content)
    
    if __name__ == '__main__':
        CMB()
        makePdf("result.pdf", [imgFileName for imgFileName in os.listdir('.') \
            if imgFileName.endswith("jpg")])
    
    

     

    展开全文
  • python将图像保存pdf图片

    万次阅读 2019-06-14 20:10:17
    python进行机器学习时需要分析数据画图及结果画图需要保存结果图片,为此,本博客稍微总结了一下常用的图片数据保存,如保存图像数据为pdf. 下面是一个用pytorch搭建的LSTM对sin函数进行预测,但是这不是本博客的...
  • 前言 网上的资料意外地少,尤其是图片的处理,基本上都是官方文档,整了半天,记录一下。 资料 先放一下官方文档及...我是python3,一开始装了一个pdfminer,装了一个pdfminer3k,但是使用时报错: ImportErr..
  • Python】 matplotlib 以pdf形式保存图片 import matplotlib.pyplot as plt from matplotlib.backends.backend_pdf import PdfPages # short version plt.plot(range(10)) plt.savefig('plot.pdf') # long ...
  • python PIL图片PDF

    2020-12-01 20:46:16
    之前有个任务需要从网上爬取图片再批量转换成PDF,最开始的方案是将图片保存在本地,再使用fpdf中的FPDF将本地图片合并成pdf,最后再删除图片。但是这样做一个缺点是保存图片到本地IO占用高,其次频繁的下载删除图片...
  • 通常的做法可能会是打印pdf文件,然后用打印机设置生产很小的pdf文件,或者就是截图保存等等。但都有点太傻瓜了,这时候还是python大法好,网上摘取了一部分别人的代码,稍作修改,就变成了一个能用的小工具。在此...
  • 将当前文件夹下的图片保存到一个pdf中,支持选择pdf大小等 如果有需要可以遍历它下面的所有文件夹 简单的来说完全满足我将漫画转成pdf格式的需求了。 碰到了一些问题,这里记录下: 一、中文路径: 这个实在是略蛋疼...
  • import PyPDF4 import pikepdf import fitz #对pdf文件进行简单的解密 def jiemi(pdfpath): new_pdfpath = pdfpath[:-4] + '_... pdfFile = PyPDF4.pdf.PdfFileReader(fp) # pdf 解密 if pdfFile.isEncrypted:
  • 批量给PDF添加签名(水印,图片),然后用同样的名字保存 原理: 先用word新建大小一样的空白文档,把签名图片放进你想要的位置,另存为sign.PDF 利用PyPDF2里面的PDF合成方法,把原PDF与你的sign.PDF合成保存,以...
  • 参考-提取图片/代码
  • Python提取PDF中的图片

    万次阅读 多人点赞 2019-01-03 10:54:26
    # 2018/08/16更新: 有些同学不知道fitz库是什么,它是pymupdf中的一个模块,操作PDF非常舒服,只...最近项目需要把word、PDF中的图片专门提取出来保存到另外的文件夹,最终成功实现; 最近项目需要把word、PDF中...
  • 保存网页手动生成一下,需要图片PDF的小工具。 结果搜半天,搜到一个一次只支持5张图片,有这功夫我放word里就转了。 我文件夹下有600多张图片,生产PDF。全选放word里,竟然是倒序,不知道怎么排序,也许可以...
  • pythonPDF转png图片

    2019-12-17 16:41:03
    pythonPDF转png图片: 调用第三方文件 :mutool 官方文档:https://mupdf.com/docs/manual-mutool-draw.html def convert_pdf_to_png(request_id, pdf_data,image_saving_path): # pdf_data pdf文件流。image_...
  • python3 pdf图片提取

    2020-05-26 13:23:47
    # 安装第三方类库pymupdf:pip install pymupdf import fitz import time import re import os # 使用正则表达式查找PDF中的图片 ... :param pic_path: 图片保存的路径 :return: ''' t0 = time.perf_counter()
  • Pyinstaller模块一、先上代码方式一直接读取pdf报告转图片方式二,生成pdf报告时直接保存成jpeg图片二、问题pdf报告转为图片中,需要poppler模块 一、先上代码 方式一直接读取pdf报告转图片 import pdf2image from ...
  • pythonpdf转png图片

    2021-02-25 10:40:01
    pdf按照图片保存。 代码 pdf_dir = [] chdir(Address) # 填文件地址 # 找pdf文件 docunames =listdir() # 读取该地址下的文件 if docunames == False: print("无文件") for docuname in docunames: # 遍历文件,...
  • 使用Python爬取微信公众号文章并保存PDF文件(解决图片不显示的问题)
  • 利用Python爬取网页中的图片内容,并将其转换为pdf格式的文件。
  • pythonpdf分割 需要注意的是需要一份分割的执行表。 具体格式如下: consult.txt中的格式为; 第几页到第几页 需要保存名称 即(1-2 test)保存的格式为pdf from PyPDF2 import PdfFileReader, PdfFile...
  • 在工作中,有时候会遇到得到当前打开的PDF,我们不知道这个PDF的路径是什么,只知道它是当前打开的那个,如何做呢? 首先需要电脑上安装了Adobe Acrobat,然后还安装了win32com。通过win32com打开AcroExch.App,从而...
  • pyecharts生成的网页图像如果直接截图,图片分辨率较低,不适合用于演示。因此可以考虑将其转换为jpg等格式使用。网上搜到的大部分采用pyecharts-snapshot方式来进行转换。通常的方法是: (1)安装phantomjs (下载...
  • 图片保存路径更改 python

    万次阅读 2017-12-27 01:09:25
    from matplotlib import pyplot as plt x=[2,5] y=[4,9] plt.plot(x,y) plt.savefig('D:\img.jpg') 或者保存pdf格式: plt.savefig('D:\img.pdf')

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 170
精华内容 68
关键字:

python图片保存pdf

python 订阅