用python 制作图片转pdf工具
作者:hebedich 发布时间:2023-02-13 09:14:51
最近因为想要看漫画,无奈下载的漫画是jpg的格式,网上的转换器还没一个好用的,于是乎就打算用python自己DIY一下:
这里主要用了reportlab。开始打算随便写几行,结果为若干坑纠结了挺久,于是乎就想想干脆把代码写好点吧。
实现了以下的几项功能:
将当前文件夹下的图片保存到一个pdf中,支持选择pdf大小等
如果有需要可以遍历它下面的所有文件夹
简单的来说完全满足我将漫画转成pdf格式的需求了。
碰到了一些问题,这里记录下:
一、中文路径:
这个实在是略蛋疼,总之就是尽量都decode一遍。然后注意win下的路径是\,要将其转化成/。然后路径遍历的时候也要注意路径怎么写的。
二、reportlab使用
这个说实话很简单,因为没考虑加点文字什么的其实就一句代码了
c.drawImage(filelist[i] , 0,0,maxw,maxh)
注意文件名也要各种decode啊。
总之借助强大的python有效代码就30行左右吧,代码地址
三、pyInstall的打包问题
开始是打算用py2exe结果打算接个简单的gui(真的是很简单)就开始跟我各种错,改的差不多想整成一个exe的时候有给我来个64bit not support。然后就转投pyInstall了,不过事情远不是那么顺利,如果用的是2.1版的话你会发现又有个巨大的bug--打包出来的exe居然不能放在中文路径下,于是乎各种找解决方案,然后发现了两种解决途径,一种是有个修改的版本(https://github.com/dkw72n/pyinstaller.git),另一种是选择2.0版。这个解决之后感觉这个比py2exe好多了,强烈推荐!
简单说下使用过程:
首先是安装:
1、下载安装pywin32;
2、下载pyInstall2.0版本(我觉得这样最好)
3、下载upx然后将文件夹中的upx.exe移动到pyInstall文件夹中
这样就完成了,连安装都不用(当然你安装也行。。。)
使用的话就是
python pyinstaller.py -F c:\scripts\main.py
如果不想要黑框的话再加个-w的参数就好。其他参数:
-F, --onefile Py代码只有一个文件
-D, --onedir Py代码放在一个目录中(默认是这个)
-K, --tk 包含TCL/TK
-d, --debug 生成debug模式的exe文件
-w, --windowed, --noconsole 窗体exe文件(Windows Only)
-c, --nowindowed, --console 控制台exe文件(Windows Only)
-X, --upx 使用upx压缩exe文件
-o DIR, --out=DIR 设置spec文件输出的目录,默认在PyInstaller同目录
--icon= 加入图标(Windows Only)
-v FILE, --version=FILE 加入版本信息文件
最后pyqt了个丑陋的缩水的界面(好吧。。我承认我真不太会写)
打包大小9M,算是可以接受了
运行效果(还不错啦):


猜你喜欢
- 1. 功能说明,在页面使用smarty循环100次输出,类似for循环100次{section name=total loop=100}{$
- 本文实例为大家分享了js实现计算器功能的具体代码,供大家参考,具体内容如下在老师的带领下完成了这个简单的计算器,这是一个神奇的过程,计算器的
- 如下所示:enc = OneHotEncoder(categorical_features=np.array([0,1,2]),n_valu
- 每次装完系统之后都要重新安装一些软件,安装软件的时候又要上网查找安装的教程,比较麻烦,所以就自己整理了mysql-8.0.15-winx64
- Mysql Binlog 简介Mysql Binlog是二进制格式的日志文件Binlog是用来记录Mysql内部对数据库的改动(只记录对数据
- 一、问题描述使用idea操作代码进行VCS很是方便,向github进行push和pull操作非常方便,但是,最近频繁提示需要重新输入用户名和
- python svm实现手写数字识别——直接可用最近在做个围棋识别的项目,需要识别下面的数字,如下图:我发现现在网上很多代码是良莠不齐,…真
- 这个问题我在给新云CMS升级时遇到了,按照升级步骤做完,后台登录时,出现“HTTP 错误 500.100 - 内部服务器错误 - ASP 错
- tensorflow在1.4版本引入了keras,封装成库。现想将keras版本的GRU代码移植到TensorFlow中,看到TensorF
- 阅读上一篇:FrontPage2002简明教程四:网页超级链接 一、三种添加CSS的方式 在FrontPage 2002里可以通过三种方式给
- 最近在学习django,学到第五章模型时,需要连接数据库,然后,在这里分享一下方法。起初是不知道怎样配置mysql数据库,但是还好,djan
- Oracle数据库出现死锁的时候可以按照以下处理步骤加以解决:第一步:尝试在sqlplus中通过sql命令进行删除,如果能够删除成功,则万事
- 在Visual Studio 中使用git——什么是Git(一)如果要使用git进行版本管理,其实使用git命令行工具就完全足够了,图形化工
- 一、clear(清空字典内容)stu = { 'num1':'Tom', '
- 字符串字面量python 中的字符串字面量由单引号或双引号括起。‘hello’ 等同于 &l
- 本文实例讲述了JavaScript中String.prototype用法。分享给大家供大家参考。具体如下:// 返回字符的长度,一个中文算2
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&
- PyGame 是专为游戏开发而设计的 Python 库。PyGame 建立在SDL库之上,因此它提供了用 Python 开发游戏的全部功能。
- 1. 如何停止任务?我们可以通过 asyncio.Task 对象上的 cancel() 方法取消任务。如果任务被取消,cancel() 方法
- 今天开始学习Python时发现Pycharm竟然过期了需要重新注册,穷苦学生没钱只能再找找百度了浪费了半天时间终于找到一个可以使用的了,支持