"""
pdf文件切成图片然后拼接成长图"""
from os import listdir
from PIL import Image
import datetime
import os
import fitz  # fitz就是pip install PyMuPDFdef pyMuPDF_fitz(pdfPath, imagePath):# startTime_pdf2img = datetime.datetime.now()  # 开始时间startTime_pdf2img = datetime.datetime.now()  # 开始时间print("PDF路径:" + pdfPath)print("PDF转图片后路径:" + imagePath)pdfDoc = fitz.open(pdfPath)  #打开文件for pg in range(pdfDoc.pageCount): # 遍历所有页面page = pdfDoc[pg]rotate = int(0)  #页面旋转角度  括号里面多少就是顺时针旋转多少度# 每个尺寸的缩放系数为1.3,这将为我们生成分辨率提高2.6的图像。# 此处若是不做设置,默认图片大小为:792X612, dpi=96# zoom_x = 1.33333333  # (1.33333333-->1056x816)   (2-->1584x1224)# zoom_y = 1.33333333zoom_x = 1  # (1.33333333-->1056x816)   (2-->1584x1224)zoom_y = 1mat = 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 + '/' + 'images_%s.png' % pg)  # 将图片写入指定的文件夹内endTime_pdf2img = datetime.datetime.now()  # 结束时间print('pdf转图片花费时长:', (endTime_pdf2img - startTime_pdf2img).seconds)def imgs(path,ispath):# 获取当前文件夹下所以图片# ims = [Image.open(r'G:\pdf_images1\%s' % fn) for fn in listdir(r'G:\pdf_images1') if fn.endswith('.png')]ims = [Image.open(f'{path}\%s' % fn) for fn in listdir(path) if fn.endswith('.png')]ims_size = [list(im.size) for im in ims]middle_width = sorted(ims_size, key=lambda im: im[0])[int(len(ims_size) / 2)][0]  # 中位数宽度ims = [im for im in ims if im.size[0] > middle_width / 2]  # 过滤宽度过小的无效图片# 过滤后重新计算ims_size = [list(im.size) for im in ims]middle_width = sorted(ims_size, key=lambda im: im[0])[int(len(ims_size) / 2)][0]  # 中位数宽度ims = [im for im in ims if im.size[0] > middle_width / 2]  # 过滤宽度过小的无效图片# 计算相对长图目标宽度尺寸for i in range(len(ims_size)):rate = middle_width / ims_size[i][0]ims_size[i][0] = middle_widthims_size[i][1] = int(rate * ims_size[i][1])sum_height = sum([im[1] for im in ims_size])# 创建空白长图result = Image.new(ims[0].mode, (middle_width, sum_height))# 拼接top = 0for i, im in enumerate(ims):mew_im = im.resize(ims_size[i], Image.ANTIALIAS)  # 等比缩放result.paste(mew_im, box=(0, top))top += ims_size[i][1]# 保存path=ispathresult.save(path)im = Image.open(path)if im.mode == 'P' or im.mode == 'RGBA':im = im.convert('RGB')(x, y) = im.size#可设置长宽像素大小x_s = 750   y_s = int(x_s * y / x)out = im.resize((x_s, y_s), Image.ANTIALIAS)out.save(path)if __name__ == "__main__":# 1、PDF文件地址pdfPath = r'E:\.....pdf'# 2、PDF文件切分后需要储存图片的目录imagePath = r'G:\....'#3、执行pyMuPDF_fitz(pdfPath, imagePath)# 4、图片目录path =imagePath# 5、拼接后的图片位置ispath = f'{path}' + ".jpg"# 5、执行imgs(path, ispath)

PDF文件切成图片然后拼接成长图相关推荐

  1. c#,将pdf文件转换成图片文件。

    本文采用Adobe Acrobat9.0的COM组件,将Pdf文件的每一页转换成对应的图片文件. 开发环境:VS2010,.Net Framework4.0,Adobe Acrobat9.0. 工程中 ...

  2. xml文件转换成图片_如何把pdf文件转换成图片?

    pdf文件怎么转成JPG图片呢?相信有不少人在迷惑,可能还在想着截图等操作来完成转换,但如果是截图成JPG图片后的效果可能很差,并没有之前pdf文件那么清楚.那这样往往打印出来的效果也不怎么理想,那怎 ...

  3. 转jpg java源程序_将pdf文件转成图片并删除java源代码

    将pdf文件转成图片并删除java源代码/** * 将pdf转成img */ public static void changePdfToImg() { try { File file = new F ...

  4. C#,pdf文件转换成图片文件。

    本文采用Adobe Acrobat9.0的COM组件,将Pdf文件的每一页转换成对应的图片文件. 开发环境:VS2010,.Net Framework4.0,Adobe Acrobat9.0. 工程中 ...

  5. xml文件转换成图片_怎样能把PDF文件转换成图片?

    我们的日常生活工作中时常碰到pdf与Excel.Word.ppt和jpg等文件格式的转换,有时候由于工作的需要,要把PDF文件转换成图片.并且现在网上的很多素材都是PDF文件格式的,如果我们想要里面的 ...

  6. 手机PDF文件转换成图片教程来了,PDF转换器推荐

    手机PDF文件怎么转换成图片?你还在用截图的方式来将PDF文件转换成图片吗?虽然确实是一种转换的方法,但是使用过的都会发现转换出来的图片清晰度不高,那该如何高清转换呢?今天小编就给大家推荐一个比较好用 ...

  7. 怎么将手机里的PDF文件转成图片

    PDF文件用手机该怎么转成图片呢?我们在查看PDF文件是总觉得没有图片看的自在,所以很多时候需要把PDF文件转成图片,那手机该怎么转换呢?一起来看看下面的方法吧. 1.首先在百度手机助手或者手机自带的 ...

  8. PDF文件转成图片保存

    最新版访问:https://blog.csdn.net/wmf_helloWorld/article/details/107105353 1.根据文件路径获取文件,并将PDF文件的每一页转换为一个图片 ...

  9. 如何把pdf文件转换成图片?

    怎么把pdf文件转换成图片?在工作中我们经常跟PDF文件打交道,PDF文件的格式稳定,安全,好阅读的优点,给我们提供了极大的便利.但在提供便利的同时也会有所限制,比如在需要编辑PDF文件的时候,就会因 ...

  10. c#,将pdf文件转换成图片文件

    本文采用Adobe Acrobat9.0的COM组件,将Pdf文件的每一页转换成对应的图片文件. 开发环境:VS2010,.Net Framework4.0,Adobe Acrobat9.0. 工程中 ...

最新文章

  1. 安装mysql.dox_linux虚拟机上装mysql数据库-Go语言中文社区
  2. 29、Power Query-分支语句的进阶
  3. vb计算机水平考试笔试,2014计算机考试二级VB笔试答题技巧汇总
  4. JavaScript中的原型prototype及原型链
  5. openresty源码剖析——lua代码的执行
  6. ups容量计算和配置方法_UPS电路设计的空开、电缆及电池如何配置,计算依据是什么...
  7. [转帖]每天看一遍,释怀所有难过
  8. Confluence或JIRA验证码乱码的问题
  9. 《统计思维-程序员数学之概率统计》学习笔记
  10. 矩形窗、汉明窗效果对比(matlab)
  11. 【DEVOPS】DevOps推进过程中的一些最佳实践
  12. 搜狗输入法按shift键切换到英文时会清空已输入字符的问题
  13. dropbox访问_使用PHP访问Dropbox
  14. dp怎么接显示器和主机_怎样设置显示器DP接口信号优先?
  15. Capstone 专注HDMI转VGA DP转VGA DP转HDMI DP转LVDS TYPEC转HDMI拓展方案+设计PCB板图
  16. 用android怎么做一个机器人,怎样写一个类似ROS的易用的android机器人框架(2)
  17. python快速生成列表_python_字符串快速生成列表的绝招
  18. 平均数编码:针对高基数定性特征(类别特征)的数据预处理/特征工程
  19. 知云文献翻译没反应_论文翻译工具--Copytranslate
  20. 智慧金融时代,大数据和AI如何为业务赋能

热门文章

  1. 将子龙山人的box2d碰撞小球修改到了cocos2d-x下,提供源码
  2. 软考计算机硬件工程师考试大纲,2016年软考信息安全工程师考试大纲
  3. 卓有成效的管理者(笔记)——有效的决策
  4. 【故障诊断分析】滚动轴承故障诊断系统含Matlab源码
  5. 音乐源码重新上传了,请童鞋们自行下载
  6. Nero 7序列号的验证方法
  7. MATLAB如何输出高分辨率图片?
  8. 泛微mysql密码_泛微ecology OA数据库配置信息泄露
  9. jdk32位安装包下载_premiere pro 2017 软件下载及安装教程
  10. xps in html5,学术干货 | 带你“一网捞尽”XPS 基本理论【绝对没有套路】