zoukankan      html  css  js  c++  java
  • 用python DIY一个图片转pdf工具并打包成exe

    最近因为想要看漫画,无奈下载的漫画是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:scriptsmain.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,算是可以接受了
    运行效果(还不错啦):

  • 相关阅读:
    [LeetCode][JavaScript]Copy List with Random Pointer
    [LeetCode][JavaScript]Best Time to Buy and Sell Stock II
    [LeetCode][JavaScript]Best Time to Buy and Sell Stock
    [LeetCode][JavaScript]Populating Next Right Pointers in Each Node
    [LeetCode][JavaScript]Text Justification
    [LeetCode][JavaScript]LRU Cache
    用CRTP在C++中实现静态函数的多态
    C++的静态分发(CRTP)和动态分发(虚函数多态)的比较
    用Y分钟学会X
    看看你能认出多少种编程语言
  • 原文地址:https://www.cnblogs.com/MrLJC/p/4261339.html
Copyright © 2011-2022 走看看