关于图片压缩的idea插件

今天主要是想给大家介绍最近自己开发的图片压缩插件,该插件用到了 tinypng 的在线服务。大家可能都知道,tinypng提供的图片压缩服务特别好用,压缩比例非常大,但是对图片质量影响比较小。
上次已经教大家怎么使用开发了,这次创建项目之类的流程不再赘述。直接来看看代码就好了。
项目依赖在这里我们需要添加 tinypng 的 api 依赖
implementation(com.tinify:tinify:latest.release)核心实现在这个 idea 插件项目中,指北君这边提供了一个 dialog 的方式来展示,这一部分指北君通过 java swing 的方式来展现。以前听到swing 总感觉头大,感觉很复杂,但是在实际开发过程中,idea 在 java swing 的开发上,做了很大的改进。全程可以靠ui设计器搞定, 出来的ui也是挺好看的。
jetbrains 在java ui 开发上真的下了不少的功夫。通过 gridlayout 进行布局,全程拖控件, 有种回到当年做 .net winform 开发的感觉。
项目是通过 kotlin 进行开发的,涉及到了kotlin的一些函数扩展方法等特性。对于java 的朋友可能有一些不太适应,但是看懂不难哦。
anaction在idea中每一个操作都是一个anaction 对象,所以我们这里也需要创建我们自己的anaction.
class imagecompressionaction : anaction() { override fun actionperformed(e: anactionevent) { checkapikeyfile(notexistaction = { popupinputkeydialog(event = e) }, existaction = { apikey - > settinypngapikey(apikey) popupcompressdialog(event = e) }) } private fun popupinputkeydialog(event: anactionevent?) { inputkeydialog(object : inputkeydialog.dialogcallback { override fun onokbtnclicked(tinypngkey: string) = checkapikeyvalid(project = geteventproject(event), apikey = tinypngkey, validaction = { updateexpireapikey(apikey = tinypngkey) popupcompressdialog(event) }, invalidaction = { popupinputkeydialog(event) }) override fun oncancelbtnclicked() { todo(not yet implemented) } }).show() } private fun popupcompressdialog(event: anactionevent?) { imagecompressiondialog(object : dialogcallback { override fun onokclicked(model: imagecompressionmodel) { val inputfiles = readinputdirfiles(model.inputdir) val starttime = system.currenttimemillis() compressimage( project = geteventproject(event), inputfiles = inputfiles, model = model, successaction = { messages.showwarningdialog( 压缩完成, 已压缩: ${inputfiles.size}张图片, 压缩总时长共计: ${(system.currenttimemillis() - starttime) / 1000}s, 提示 ) }, failaction = { popupinputkeydialog(event = event) }) } override fun oncancelclicked() { todo(not yet implemented) } }).show() }}在这个anaction 中我们主要做了以下几件事情:
检查 tinypng api key 是否有效检查 弹出图片压缩界面填充图片压缩界面的历史数据前端界面主要有两个界面,一个是输入apikey的界面,另外一个是选择图片路径进行压缩的界面。
1、api key 输入界面,这个界面做的比较简单,只是简单的输入 tinypng 网站申请过来的 key ,对key 进行保存。
2、 选择图片路径的界面, 选择图片的源目录,和输出目录, 并且可以设置输出文件的前缀名。

喜讯 | 经纬恒润荣获2020 PACCAR集团10PPM奖
VR公司NextVR表示裁员并不会影响他们的现场制作计划
WiLink 8Q 系列无线车载连接器件的作用
Spring Bean相关的4个注解及使用方法
新松机器人为宝马提供的砂芯智能存储及除湿系统竣工试运行
关于图片压缩的idea插件
小企业如何选择人脸识别系统
单片机入门教程第12课-单片机指令(五)
中频压控振荡器的IC简化实现
华为云桌面,高流畅低延时,给你丝滑办公体验
荣耀新品预热:新款 MagicBook 笔记本和智慧屏要来了
互联网时代,高用户DOU是不是等于高用户ARPU呢?
关于编程的12条自问,你知道多少呢?
益莱储——让你的钱更值钱
区块链游戏“以太熊猫”玩法解析
嵌入式好用工具—软件篇
边缘计算被誉为是5G时代的下一个风口
别想了, 小米6无缘今日CES小米MIX皓月白版、小米电视4才是重点
雷蛇发布新一代游戏鼠标毒蝰8K Hz 延迟低至0.125毫秒
iPhone 12全面取消充电器!倍思推出苹果20W超级硅快充头