欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用JAVA写一个批量图片压缩工具 java桌面程序图片压缩 

程序员文章站 2024-03-25 21:06:46
...

    写这个工具的原因是因为昨天整理自己的照片,发现总共有11个G之多,想到这几年照的这些照片有的还是挺珍贵的, 丢失了肯定会痛心疾首,于是就想存到手机或网络硬盘里面, 但是11G的东西实在是太大了,需要压缩.就花了一晚上到处在网上找压缩工具, 足足整了好几个小时,这些五花八门的软件都有各自的缺点,比如:操作繁琐(我的图片挺多),cpu占用非常厉害,内存吃的太多,速度太慢,图像破碎(一块 一块的丢失),最关键的是exif信息几乎都会丢失,压缩了之后放到手机上,该自动旋转的不能旋转,拍照时间等等信息都丢光了.于是乎,我就怒了,决定自 己动手写一个批量压缩的软件.

用的得心应手的开发语言也就是java了.粗略一想,可以这么设计: swt做框架,html+css来渲染界面,swt来做桥接通信,graphicsMagick来做图片压缩,jni调用 graphicsMagick.

经过三个小时的吞云吐雾(我写代码有时候是烟不离手),写了一个这玩意儿:



用JAVA写一个批量图片压缩工具
            
    
    
        java桌面程序图片压缩 

看起来极不专业,但确实解决了我的大问题,速度还行,会完整保留exif信息,压缩之后清晰度极高,发出来让大家也用用吧,万一有需求呢,呵呵.

 

事实上开发这个小程序过程中会遇到很多问题,如如何精简jre,如何绑定需要的jar文件,如何多线程压缩图片,如何根据图片分辨率调整比例.就不一一细说了.

补充几点

  1. 选择html来渲染界面是因为,我实在是不想花时间去整 jFace,swt,swing,awt这些东西,最熟悉高效快捷美观的就是html了.调试html,一个firebug就让人欲罢不能(附件里面有一 个文件夹叫resouce,里面就是所有的html+图片了,本来可以封装到java代码里面,想想还是算了).
  2. 选择了html,也就只有选择swt了,毕竟swt对浏览器的接口封装是做的比较好的,这里就直接用的ie内核,绑定xulrunner等等体积太大,所以在写界面的时候一定要在ie678910里面都调试一下,毕竟我不知道用户的ie版本是多少.
  3. js和java的通信用的swt的接口,还是可以接受,毕竟需要传输的数据量微乎其微.
  4. graphicsMagick,这个是图片压缩的不二选择.继承自ImageMagick,却更小,更稳定,更高效.

    写这个的目的是为了方便生活.我用java写过很多类似的东西,比如有一次我需要用迅雷下载一个很大的文件(20G),而且需要拷到U盘里面第二天带走,我 不可能晚上守着迅雷看它下载完成,再去手动拷贝到U盘里面(我的U盘写入速度只有4M - -!),用java写十几行代码就搞定了,监听是否下载完成,再拷贝,一两分钟的事. 又比如一个摄影论坛必须会员才能下载高清图片,而会员又要邀请码,这帮人真是扯淡...高清图片的地址只不过是在缩略图前面加了一个"gq_"...自己动手 写一个爬虫,半个小时就把他网站所有的高清图都爬下来了...又比如微博里面有一个人总是换各种账号来给我发同样的广告,我又自己写了个小程序,凡是出现 某些关键字就直接删除评论并加入黑名单. 而这些都是用java写的.有时候,做web系统做久了,都忘了java还可以这么全能......

    方家指教,欢迎讨论.

 

  • 用JAVA写一个批量图片压缩工具
            
    
    
        java桌面程序图片压缩 
  • 大小: 31.3 KB