PIL+pyqt 写了一个图片批量无损压缩工具python
前言
学习了一段时间python了…但是一直没有好的系统性的练手项目…
刚好最近想整理电脑里老旧的照片, 图片太多 大概130G 文件…
本人也是比较怀旧的人.图片不想丢弃…磁盘用了有10年了,以防意外…想打包传到云盘备份…但是这个体积太大了.传上去太久.
所以想到了压缩图片
其实网上有很多压缩工具…只是自己根想练手试试…也是系统性的做一个尝试…不然学了python不知道干什么,就知道爬爬爬…
不要界面的话其实 40-50行代码就搞定了…
但是我想写一个成品…可以直接拿出来用的…所以…说干就干…
所以来来回回花费了一周时间又学习了下 Pyqt . 写了一个界面…
开工之前的要求
- 需要不修改分辨率
- 压缩储存体积
- 保留照片拍照信息 exif
- 上手就能用
有了要求,那么该怎么做呢…
用什么方式及思路?
- 用python中有名的图片处理库 PIL > pip install Pillow 来解决压缩问题.
- 或在网上找找用C/C++写的开源库,感觉速度快,效果好
- 后来发现自己绕路了,功力尚浅…找了许多大部分是对 PNG图片的处理的…对手机拍照JPG格式基本无效…(坦言,我没找到…有知道的说一声啦 谢谢.)
- 其实平时用PIL其实就可以搞定大部分问题…
- 本来想用python自带的tinker…感觉写界面太麻烦…所以直接用pyqt 可以方便的画界面.
- 所以就直接用 PIL + pyqt 的方式了.
界面展示
整体压缩率还是挺不错的…而且没有修改分辨率…预览后效果大致相同
预览页面还需要修改…效果不满意…
需要改进的地方
- "设置"和"预览"暂时不能用…预览其实已经写了,但是感觉效果不满意…主要有一些不合理的地方…在查找一下文档看怎么调整…我所想的是 原图在 下面一层,修改后图片在上一层(相当于重叠)…左右拖动上一层图片边框实现调整大小,从而实现对比预览.
- PNG格式的 用 PIL 转换 耗时巨大,而且没有效果,甚至是负效果.(如果只是手机拍照基本没有这个问题…因为手机拍照基本是 JPG格式)
- 修改分辨率只能批量修改,(看以后需求,可以设置单分辨率)
- 最后打包体积巨大…就这些东西打包下来 80+M… (是要研究研究 python打包玄学了)
写的过程中遇到的问题及解决
**问题:**使用 PIL 旋转图片方向的时候 不会修改 exif 信息…导致如果用看图软件的话 ,图片又重新转向了…
**解决:**旋转的图片之后修改exif .PIL没有带这个功能,所以使用piexif 库,之后就解决了.
问题: PNG 图片无法处理
解决: 使用 pngquant 解决的.这个是用C写的,使用命令行模式调用…(如果有其他好方法老哥们分享分享啊)
写最后吧
其实从无到有满满的成就的…总之不是原来那样的小白了.遇到问题不能自己思考…其实写出来之前遇到了大量的坑…遇到就百度,GitHub找…最后总算明白pyqt的设计思路了.后来写起来才算顺利一点…
其实你们看的界面图的发,发现我路径里有一个批量命名的…确实 …因为这个图片压缩后有一些图片格式不统一(不同相机/手机拍摄),所以有这个问题…所以顺手写了一个批量处理…实现自动用 exif信息按照统一格式命名…(这个写到最后发现 对平时需要批量命名的也可以.所以又调整了下.基本成型)
写了这么多也想分享大家使用 压缩包体积确实有点大了…待我调整好了后,需要的朋友我就放到网盘自己去下载吧…
额!!! 第一篇博客… 压缩包还没上传…传了在修改下载地址哈…
PIL+pyqt 写了一个图片批量无损压缩工具python相关推荐
- 【办公软件有哪几种】万彩办公大师教程丨图片批量无损压缩工具
图片大小压缩工具, 导入图片(目前支持bmp/gif/png/jpg),一键批量压缩图片大小. 使用智能压缩算法, 在保证图片品质的情况下压缩图片. 支持自定义压缩比率, 压缩比率可高达95%. 一. ...
- python PIL 将带透明底png图片批量转化为jpg格式
需求: 将带透明底png图片批量转化为jpg格式 遇到的问题: 好多帖子的方法虽然可以将png图片转化为jpg图片,但是转化后的jpg图片有问题,转化后的图片和原图差距太大 解决办法: 直接将png图 ...
- 写了一个图片横向滚动且首尾相接的JS组件
当年我也是从网上down组件直接拿来用的小白. 记得三年前去XM面试的时候,明哥问我: "如果你需要一个页面特效,你怎么做?" 我呆萌的回答说:"网上down一个哦!&q ...
- JavaScript写的一个图片的抽奖功能的案例
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...
- 网页图片批量获取(Python教程)
推荐自己的专栏:玩一玩爬虫咯 文章中的许多代码都有对于路径的操作,代码中所给路径仅作参考,请根据自身情况进行适配 本文仅作敲砖引玉之用,所讲解知识点有限,只讲解了文本代码中用到的知识点 文章目录 图片 ...
- pythonjava app切出后无网络连接_写了一个java的Server 用python的client访问却访问不通问题。...
首先给出这个java的Server代码 try{//1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口 ServerSocket serverSocket=ne ...
- python批量裁剪图片_用Python写了一个图片格式批量处理工具
来源:blog.csdn.net/kimol_justdo 前言 就在昨天,正当我在刺激战场厮杀时,"叮叮叮",微信来消息了.我心想:"这是肾马情况?" 我打开 ...
- Python3,为了给女神暗送秋波,我默默的写了一个图片字符画生成器,真香。
图片字符画制作 1.引言 2.代码实战 2.1 原理 2.2 实例 3.总结 1.引言 小屌丝:鱼哥,给你看个照片. 小鱼:什么-照片-首先声明,我可是正经人. 小屌丝:你先看看. 小鱼:就这,有啥好 ...
- 自己写的一个抢票加速的Python小程序源码分享-----纯属娱乐
最近这段时间频频看到微信群里发什么 抢票加速,智行.携程.飞猪.美团,对于我这能坐客车就不坐火车的人来说,无所谓靠谱不靠谱 突发奇想的整理了下整个抢票加速的逻辑,写了这个小程序,代码很low,拒绝批评 ...
最新文章
- kdj指标主要看哪个值_什么是KDJ?KDJ指标如何使用
- Qt中为工程添加资源文件、给按钮添加图片
- Linux 下第一个shell脚本
- vs 移除项目代码管理
- JavaScript Break 和 Continue 语句
- LeetCode:每日一题——数位成本和为目标值的最大数字
- VB编程:GetSetting控制软件试用期-56
- Xposed入门篇之安装xposed框架
- 利用接口实现动态加载类以及 Activator.CreateInstance用法示例
- 鸿蒙818与A73,荣耀智慧屏正式发布:鸿鹄818智慧芯片+鸿蒙OS,开启未来新视觉
- 论文阅读: Inertia Tensor Properties in Robot Dynamics Identification: A Linear Matrix Inequality Approac
- B05 - 008、什么是大数据
- 【JavaEE】简单了解操作系统、进程内存管理
- Error Some file crunching failed, see logs for details 解决方案
- java实现附件预览(openoffice+swftools+flexpaper)
- 大数据技术Flink详解
- 曼尼托巴大学计算机科学硕士,加拿大曼尼托巴大学优势专业有哪些
- UI自动化测试(一)
- html、css、js(javaWEB开发)
- 实验十 基于Simulink的爬山法MPPT技术仿真