在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于圖片壓縮的idea插件

科技綠洲 ? 來源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-10-09 15:06 ? 次閱讀

今天主要是想給大家介紹最近自己開發(fā)的圖片壓縮插件,該插件用到了 tinypng 的在線服務(wù)。大家可能都知道,tinypng提供的圖片壓縮服務(wù)特別好用,壓縮比例非常大,但是對(duì)圖片質(zhì)量影響比較小。

上次已經(jīng)教大家怎么使用開發(fā)了,這次創(chuàng)建項(xiàng)目之類的流程不再贅述。直接來看看代碼就好了。

項(xiàng)目依賴

在這里我們需要添加 tinypng 的 API 依賴

implementation("com.tinify:tinify:latest.release")

核心實(shí)現(xiàn)

在這個(gè) idea 插件項(xiàng)目中,指北君這邊提供了一個(gè) dialog 的方式來展示,這一部分指北君通過 Java Swing 的方式來展現(xiàn)。以前聽到swing 總感覺頭大,感覺很復(fù)雜,但是在實(shí)際開發(fā)過程中,idea 在 Java Swing 的開發(fā)上,做了很大的改進(jìn)。全程可以靠UI設(shè)計(jì)器搞定, 出來的UI也是挺好看的。

圖片

Jetbrains 在Java UI 開發(fā)上真的下了不少的功夫。通過 GridLayout 進(jìn)行布局,全程拖控件, 有種回到當(dāng)年做 .net winform 開發(fā)的感覺。

項(xiàng)目是通過 kotlin 進(jìn)行開發(fā)的,涉及到了kotlin的一些函數(shù)擴(kuò)展方法等特性。對(duì)于Java 的朋友可能有一些不太適應(yīng),但是看懂不難哦。

AnAction

在idea中每一個(gè)操作都是一個(gè)AnAction 對(duì)象,所以我們這里也需要?jiǎng)?chuàng)建我們自己的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}張圖片, 壓縮總時(shí)長(zhǎng)共計(jì): ${(System.currentTimeMillis() - startTime) / 1000}s",
                            "提示"
                        )
                    },
                    failAction = {
                        popupInputKeyDialog(event = event)
                    })
            }

            override fun onCancelClicked() {
                TODO("Not yet implemented")
            }

        }).show()
    }
}

在這個(gè)AnAction 中我們主要做了以下幾件事情:

  • 檢查 tinypng api key 是否有效
  • 檢查 彈出圖片壓縮界面
  • 填充圖片壓縮界面的歷史數(shù)據(jù)

前端界面

主要有兩個(gè)界面,一個(gè)是輸入APIKey的界面,另外一個(gè)是選擇圖片路徑進(jìn)行壓縮的界面。

1、API Key 輸入界面,這個(gè)界面做的比較簡(jiǎn)單,只是簡(jiǎn)單的輸入 TinyPng 網(wǎng)站申請(qǐng)過來的 key ,對(duì)key 進(jìn)行保存。

圖片

2、 選擇圖片路徑的界面, 選擇圖片的源目錄,和輸出目錄, 并且可以設(shè)置輸出文件的前綴名。

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2983

    瀏覽量

    106506
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1555

    瀏覽量

    63293
  • 壓縮
    +關(guān)注

    關(guān)注

    2

    文章

    102

    瀏覽量

    19592
  • 插件
    +關(guān)注

    關(guān)注

    0

    文章

    339

    瀏覽量

    22903
  • idea
    +關(guān)注

    關(guān)注

    1

    文章

    70

    瀏覽量

    4487
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    IDEA插件MyBatisCodeHelperPro 21版本介紹

    開發(fā)了兩年多的 IDEA插件 MyBatisCodeHelperPro 21 版本發(fā)布
    發(fā)表于 07-12 17:07

    IDEA EasyCode插件怎么使用

    目錄1、前言2、安裝(EasyCode)3、建立數(shù)據(jù)庫(kù)4、在IDEA配置連接數(shù)據(jù)庫(kù)5、開始生成代碼6、pom.xml7、Application.yml8、啟動(dòng)項(xiàng)目來源:jianshu.c...
    發(fā)表于 12-08 07:17

    基于VP8編碼的Webp圖片壓縮格式研究

    通過研究發(fā)現(xiàn)Webp格式圖片壓縮質(zhì)量略低于JPEG格式圖片,可能是由于沒有成熟的編解碼器的原因。
    發(fā)表于 03-23 10:30 ?3568次閱讀
    基于VP8編碼的Webp<b class='flag-5'>圖片</b><b class='flag-5'>壓縮</b>格式研究

    C#教程之壓縮圖片

    C#教程之壓縮圖片,很好的C#資料,快來學(xué)習(xí)吧。
    發(fā)表于 04-20 11:13 ?3次下載

    電腦上的圖片怎么批量壓縮

    ? ? 對(duì)電腦上的文件我們都會(huì)定期的清理,相信大家也發(fā)現(xiàn)了在整理圖片文件時(shí)總是會(huì)用到壓縮,我們電腦上都會(huì)保存著各式各樣的圖片,單項(xiàng)的壓縮圖片很浪費(fèi)時(shí)間,那么怎樣
    發(fā)表于 09-21 17:59 ?678次閱讀

    compileflow-idea-designer compileflow引擎的Idea插件

    ./oschina_soft/compileflow-idea-designer.zip
    發(fā)表于 05-18 14:18 ?2次下載
    compileflow-<b class='flag-5'>idea</b>-designer compileflow引擎的<b class='flag-5'>Idea</b><b class='flag-5'>插件</b>

    MrtfGitFlow4Idea分支管理插件

    ./oschina_soft/mrtf-git-flow-4idea.zip
    發(fā)表于 05-18 14:17 ?1次下載
    MrtfGitFlow4<b class='flag-5'>Idea</b>分支管理<b class='flag-5'>插件</b>

    Idea Javadocs2 IntelliJ IDEA插件

    ./oschina_soft/idea-javadocs2.zip
    發(fā)表于 05-18 14:13 ?1次下載
    <b class='flag-5'>Idea</b> Javadocs2 IntelliJ <b class='flag-5'>IDEA</b><b class='flag-5'>插件</b>

    ADB IDEA Android Studio和IDEA的安卓開發(fā)插件

    ./oschina_soft/adb-idea.zip
    發(fā)表于 05-18 11:44 ?3次下載
    ADB <b class='flag-5'>IDEA</b> Android Studio和<b class='flag-5'>IDEA</b>的安卓開發(fā)<b class='flag-5'>插件</b>

    idea-mini-ibatis iBatis/MyBatis插件

    ./oschina_soft/idea-mini-ibatis.zip
    發(fā)表于 05-18 11:38 ?1次下載
    <b class='flag-5'>idea</b>-mini-ibatis iBatis/MyBatis<b class='flag-5'>插件</b>

    Intellij IDEA插件idea-plugin-protobuf

    ./oschina_soft/idea-plugin-protobuf.zip
    發(fā)表于 05-18 11:09 ?2次下載
    Intellij <b class='flag-5'>IDEA</b><b class='flag-5'>插件</b><b class='flag-5'>idea</b>-plugin-protobuf

    idea-gitignore IDE .ignore插件

    ./oschina_soft/idea-gitignore.zip
    發(fā)表于 06-10 09:12 ?1次下載
    <b class='flag-5'>idea</b>-gitignore IDE .ignore<b class='flag-5'>插件</b>

    史上最全的圖片壓縮方法總結(jié)

    最近在研究圖片壓縮原理,看了大量資料,從上層尺寸壓縮、質(zhì)量壓縮原理到下層的哈夫曼壓縮,走成華大道,然后去二仙橋,全看了個(gè)遍,今天就來總結(jié)總結(jié)
    的頭像 發(fā)表于 07-30 14:46 ?4944次閱讀

    IDEA接口測(cè)試神器Apipost Helper 2.0簡(jiǎn)介

    最近注意到Apipost IDEA插件 2.0版本已上架至IDEA插件商店并與1.0版本互相獨(dú)立存在,大家安裝時(shí)可留意Apipost Helper 2.0,下面給大家分享一下新增功能。
    的頭像 發(fā)表于 09-21 14:57 ?2320次閱讀
    <b class='flag-5'>IDEA</b>接口測(cè)試神器Apipost Helper 2.0簡(jiǎn)介

    介紹一款IDEA插件:Apipost-Helper-2.0

    IDEA是一款功能強(qiáng)大的集成開發(fā)環(huán)境(IDE)插件,它可以幫助開發(fā)人員更加高效地編寫、調(diào)試和部署軟件應(yīng)用程序。
    的頭像 發(fā)表于 12-06 10:47 ?1063次閱讀
    介紹一款<b class='flag-5'>IDEA</b><b class='flag-5'>插件</b>:Apipost-Helper-2.0
    主站蜘蛛池模板: 五月婷婷啪啪 | 亚洲综合精品 | 日本a网站 | 国产小视频在线免费 | 天堂在线最新版在线www | 一区二区三区高清视频在线观看 | 黄色激情小说视频 | 五月婷婷影院 | 天天夜夜久久 | 欧美乱妇15p | 手机在线免费观看视频 | 看黄在线 | 亚洲mm8成为人影院 亚洲qingse中文在线 | 久久综合偷偷噜噜噜色 | 四虎在线成人免费网站 | 国产高清在线播放免费观看 | 国产亚洲papapa | 色噜噜狠狠狠狠色综合久一 | 韩国特黄特色a大片免费 | 欧美一级第一免费高清 | 夜夜春色 | 亚洲电影二区 | 欧美一二三区 | 干干天天| 色姑娘网| 人人爱人人艹 | 五月天婷婷在线观看高清 | 四虎黄色影院 | 国产精品久久久久久吹潮 | 中文字幕亚洲区 | 四虎影院免费在线 | 三级视频中文字幕 | 国产亚洲一区二区三区在线 | 色域综合| 日本又粗又长一进一出抽搐 | 日韩1级片 | 加勒比啪啪 | 久久国产精品免费观看 | 亚洲最大毛片 | 亚洲一区免费观看 | 国产日本在线播放 |