PDF文件切成图片然后拼接成长图
"""
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文件切成图片然后拼接成长图相关推荐
- c#,将pdf文件转换成图片文件。
本文采用Adobe Acrobat9.0的COM组件,将Pdf文件的每一页转换成对应的图片文件. 开发环境:VS2010,.Net Framework4.0,Adobe Acrobat9.0. 工程中 ...
- xml文件转换成图片_如何把pdf文件转换成图片?
pdf文件怎么转成JPG图片呢?相信有不少人在迷惑,可能还在想着截图等操作来完成转换,但如果是截图成JPG图片后的效果可能很差,并没有之前pdf文件那么清楚.那这样往往打印出来的效果也不怎么理想,那怎 ...
- 转jpg java源程序_将pdf文件转成图片并删除java源代码
将pdf文件转成图片并删除java源代码/** * 将pdf转成img */ public static void changePdfToImg() { try { File file = new F ...
- C#,pdf文件转换成图片文件。
本文采用Adobe Acrobat9.0的COM组件,将Pdf文件的每一页转换成对应的图片文件. 开发环境:VS2010,.Net Framework4.0,Adobe Acrobat9.0. 工程中 ...
- xml文件转换成图片_怎样能把PDF文件转换成图片?
我们的日常生活工作中时常碰到pdf与Excel.Word.ppt和jpg等文件格式的转换,有时候由于工作的需要,要把PDF文件转换成图片.并且现在网上的很多素材都是PDF文件格式的,如果我们想要里面的 ...
- 手机PDF文件转换成图片教程来了,PDF转换器推荐
手机PDF文件怎么转换成图片?你还在用截图的方式来将PDF文件转换成图片吗?虽然确实是一种转换的方法,但是使用过的都会发现转换出来的图片清晰度不高,那该如何高清转换呢?今天小编就给大家推荐一个比较好用 ...
- 怎么将手机里的PDF文件转成图片
PDF文件用手机该怎么转成图片呢?我们在查看PDF文件是总觉得没有图片看的自在,所以很多时候需要把PDF文件转成图片,那手机该怎么转换呢?一起来看看下面的方法吧. 1.首先在百度手机助手或者手机自带的 ...
- PDF文件转成图片保存
最新版访问:https://blog.csdn.net/wmf_helloWorld/article/details/107105353 1.根据文件路径获取文件,并将PDF文件的每一页转换为一个图片 ...
- 如何把pdf文件转换成图片?
怎么把pdf文件转换成图片?在工作中我们经常跟PDF文件打交道,PDF文件的格式稳定,安全,好阅读的优点,给我们提供了极大的便利.但在提供便利的同时也会有所限制,比如在需要编辑PDF文件的时候,就会因 ...
- c#,将pdf文件转换成图片文件
本文采用Adobe Acrobat9.0的COM组件,将Pdf文件的每一页转换成对应的图片文件. 开发环境:VS2010,.Net Framework4.0,Adobe Acrobat9.0. 工程中 ...
最新文章
- 安装mysql.dox_linux虚拟机上装mysql数据库-Go语言中文社区
- 29、Power Query-分支语句的进阶
- vb计算机水平考试笔试,2014计算机考试二级VB笔试答题技巧汇总
- JavaScript中的原型prototype及原型链
- openresty源码剖析——lua代码的执行
- ups容量计算和配置方法_UPS电路设计的空开、电缆及电池如何配置,计算依据是什么...
- [转帖]每天看一遍,释怀所有难过
- Confluence或JIRA验证码乱码的问题
- 《统计思维-程序员数学之概率统计》学习笔记
- 矩形窗、汉明窗效果对比(matlab)
- 【DEVOPS】DevOps推进过程中的一些最佳实践
- 搜狗输入法按shift键切换到英文时会清空已输入字符的问题
- dropbox访问_使用PHP访问Dropbox
- dp怎么接显示器和主机_怎样设置显示器DP接口信号优先?
- Capstone 专注HDMI转VGA DP转VGA DP转HDMI DP转LVDS TYPEC转HDMI拓展方案+设计PCB板图
- 用android怎么做一个机器人,怎样写一个类似ROS的易用的android机器人框架(2)
- python快速生成列表_python_字符串快速生成列表的绝招
- 平均数编码:针对高基数定性特征(类别特征)的数据预处理/特征工程
- 知云文献翻译没反应_论文翻译工具--Copytranslate
- 智慧金融时代,大数据和AI如何为业务赋能
热门文章
- 将子龙山人的box2d碰撞小球修改到了cocos2d-x下,提供源码
- 软考计算机硬件工程师考试大纲,2016年软考信息安全工程师考试大纲
- 卓有成效的管理者(笔记)——有效的决策
- 【故障诊断分析】滚动轴承故障诊断系统含Matlab源码
- 音乐源码重新上传了,请童鞋们自行下载
- Nero 7序列号的验证方法
- MATLAB如何输出高分辨率图片?
- 泛微mysql密码_泛微ecology OA数据库配置信息泄露
- jdk32位安装包下载_premiere pro 2017 软件下载及安装教程
- xps in html5,学术干货 | 带你“一网捞尽”XPS 基本理论【绝对没有套路】