python批量图片转pdf,用python 制作图片转pdf工具

最近因为想要看漫画,无奈下载的漫画是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了个丑陋的缩水的界面(好吧。。我承认我真不太会写)

29932245220ab648668d40b966e8783b.png

5723eebc06fa8ad84a266a27c6a7c115.png

打包大小9M,算是可以接受了

运行效果(还不错啦):

4192cac5e4a0437ce84be8b0f0d4404e.png

以上就是本文的全部内容了,希望小伙伴们喜欢。

时间: 2015-01-29

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/557129.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中如何遍历Map对象的4种方法

在Java中如何遍历Map对象 *How to Iterate Over a Map in Java* 在java中遍历Map有不少的方法。我们看一下最常用的方法及其优缺点。 既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHashMap, Hashtable, 等…

大学本科 java教材,大学本科自学java之路——IO

大学本科自学java之路——IO大学本科自学java之路——IO我现在大三,大一,大二就是玩,现在大三准备考虑就业了,特写博客便于坚持自己学习一. 字节缓冲流的构造方法:BufferedOutputStream:该类实现缓冲输出流。 通过设置…

Map的value转化为其它类型

map的values() Collection<String> v map.values(); 转化为数组或者List集合 转化为List: List<String> lnew ArrayList<String>(map.values()); for(String s:l){System.out.print(s); }转化为数组 1.直接为Object[]数组 Object[] array map.values(…

下载的oracle如何解压,深度概述Ubuntu oracle下载解压

oracle经过长时间的发展&#xff0c;我发表对Ubuntu oracle个人讲解&#xff0c;叙述下Ubuntu oracle使用。Ubuntu 包含了非常好的翻译和容易使用的架构&#xff0c;这些由自由软件社团将不断的提供, 将尽可能的使大多数人方便使用 Ubuntu 。1. 先到 Ubuntu oracle 网站上下载了…

关于比较器Comparator排序时间的问题

​ 最近涉及一个需要按照时间排序的问题&#xff0c;由于在数据库层面order by太麻烦&#xff0c;所以就准备在代码层面解决&#xff0c;但是过程中遇到了一个很有意思的问题。 ​ 先介绍一下用的比较器的api&#xff1a; o1大于o2,则返回正数&#xff1b;o1等于o2,则返回0&…

Error running ‘transmission‘: Unable to open debugger port (127.0.0.1:52469): java.net.SocketExcepti

IDEA运行tomcat启动项目时报错。 开始还以为是这里的端口被占用的问题 然而实际上是tomcat的JMX端口的问题&#xff0c;将端口修改一下&#xff0c;就可以完美启动。 修改之后即可启动项目

oracle 11g 环境,Linux彻底清理Oracle 11g RAC环境方案

参考文档&#xff1a;Linux环境下11.2.0.3 rac的快速卸载脚本在Oracle 11.1和Oracle 10.1,10.2上&#xff0c;都是官方提供手工清理RAC环境的方法的(比如环境有问题&#xff0c;或者RAC安装失败&#xff0c;要清理后重新安装。虽然这些版本&#xff0c;也提供了卸载脚本&#x…

oracle常用用户权限,oracle创建新用户及授予常用权限

创建用户create user usernameidentified by usernamedefault tablespace tablespace_name;授予一般权限grant connect,resource,create any table,drop any table,create sequence,select any table, create any index, drop any index,alter any trigger, create any trigger…

synchronized 锁升级过程

synchronized 锁升级过程就是其优化的核心&#xff1a;偏向锁 -> 轻量级锁 -> 重量级锁 class Test{private static final Object object new Object(); public void test(){synchronized(object) {// do something } }}每个对象创建时都有各自的对象头&#…

oracle数据泵索引创建慢,IMPDP 很慢的原因探究

最近帮一个客户做数据迁移测试&#xff0c;数据库版本的10.2.0.4.0&#xff0c;操作系统是AIX到Linux&#xff0c;采用EXPDP/IMPDP方式进行全库导出和导入。客户的数据库有3.6T&#xff0c;导出时间花了30小时&#xff0c;但是导入却花了120小时&#xff0c;这个很不正常。因为…

Collections.synchronizedList使用

Collections.synchronizedList使用 1.SynchronizedList类具体代码&#xff1a; static class SynchronizedList<E>extends SynchronizedCollection<E>implements List<E> {private static final long serialVersionUID -7754090372962971524L;final List&l…

oracle提交数据按键,Oracle PLSQL - 仅提交数据库链接(Oracle PLSQL - Commit only database link)...

Oracle PLSQL - 仅提交数据库链接(Oracle PLSQL - Commit only database link)有没有办法只通过数据库链接而不是当前会话的数据提交在表上插入/更新的数据&#xff1f; 或者他们被认为是同一个&#xff1f;例如&#xff1a;INSERT INTO main_database.main_table(value1, valu…

oracle ado6,c# ado 连接数据库 六步曲

建立连接分为六步&#xff1a;1.定义连接字符串&#xff0c;oracle 的连接字符串为&#xff1a;private static string connString "Data Source192.168.1.130:1521/mydata;Persist Security InfoTrue;User IDem_test;Passwordtest123;UnicodeTrue";2.根据连接字符串…

java中数组遍历的三种方式

1.for循环遍历 通常遍历数组都是使用for循环来实现。遍历一维数组很简单&#xff0c;遍历二维数组需要使用双层for循环&#xff0c;通过数组的length属性可获得数组的长度。 2.Arrays工具类中toString静态方法遍历 利用Arrays工具类中的toString静态方法可以将一维数组转化为…

127.0.0.1 myz.php,XXE漏洞总结 · MYZ’s Blog

就先以这次校赛的例子作为开头吧ctf首先说一说这次的题&#xff1a;这一次的题是一种回显式的xxe,但是过滤了ENTITY参数.(有点难以判别)贴出源码:1234567891011121314151617181920212223242526272829303132libxml_disable_entity_loader(false);$user1 $_POST[user1];$xmlfile…

mysql中union 查询

mysql中union 查询 UNION ALL只是简单的将两个结果合并后就返回。这样&#xff0c;如果返回的两个结果集中有重复的数据&#xff0c;那么返回的结果集就会包含重复的数据了。 从效率上说&#xff0c;UNION ALL 要比UNION快很多&#xff0c;所以&#xff0c;如果可以确认合并的…

oracle内存表与临时表,Oracle 临时表之临时表空间组(TTG)

环境&#xff1a;sysORCL> select * from v$version;BANNER----------------------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProdPL/SQL Release 10.2.0.1.0 - ProductionCORE 10.2.0.1.0 Producti…

修改TOMCAT的JVM虚拟机内存大小几种方式

修改TOMCAT的JVM虚拟机内存大小几种方式 Tomcat默认可以使用的内存为128MB&#xff0c;在较大型的应用项目中&#xff0c;这点内存是不够的&#xff0c;需要调大。 经常会出现Java.lang.OutOfMemoryError: Java heap space 即JVM Heap溢出的错误。 对此有以下几种方法可以选…

oracle数据库read only,oracle 报错Linux-x86_64 Error: 30: Read-only file system

本帖最后由 ccton 于 2014-2-18 12:08 编辑[root**** hydata]# cat /etc/redhat-releaseRed Hat Enterprise Linux Server release 5.6 (Tikanga)[root**** hydata]# uname -aLinux gywsj.hyb210 2.6.18-238.el5 #1 SMP Sun Dec 19 14:22:44 EST 2010 x86_64 x86_64 x86_64 GNU…

sql中in和exist语句的区别?

两者都能实现表功能查询&#xff0c;主要区别如下&#xff1a; 1、适用表的类型不同。 in是子查询为驱动表&#xff0c;外面的表为被驱动表&#xff0c;故适用于子查询结果集小而外面的表结果集大的情况。 exists是外面的表为驱动表&#xff0c;子查询里面的表为被驱动表&am…