KotlinとJavaFXで画像圧縮ツール『ImageCompressorFX』を自作してみた!
Tags: #プログラミング #Kotlin #JavaFX #画像圧縮 #ツール #ImageCompressorFX #ブログ記事 #2024年9月
Published on:
Updated on:
※記事には、広告のリンクが含まれます。
スポンサーリンク
こんにちは、鈴木俊吾(すずしん)です。
ブログを運営していると、画像の容量を軽くするために画像圧縮を行うことがありますよね?
私も他のところで提供されている画像圧縮ツールを使っていましたが…。
何だか自分で作ってみたくなりました!
そこで、KotlinとJavaFXを使って画像圧縮ツール『ImageCompressorFX』を自作してみました!
シンプルな作りになってはいますが、実用性のあるツールになっていると思います。
この『ImageCompressorFX』は、GitHubにて公開しています。
ぜひ、ご自身の環境でお試しください!
以下で詳しく説明していきます。
目次
画像圧縮の重要性
画像圧縮は、Webサイトの表示速度を向上させるために重要な作業。
画像の容量を軽くすることで、ページの読み込み速度が向上します。
その結果、ユーザーのストレスを軽減できます。
ページ全体の表示速度のボトルネックになるのは、画像の容量が大きい場合が多いです。
そのため、画像圧縮はWebサイトの運営において欠かせない作業と言えるでしょう。
こういう一見地味な作業。
こうした作業の積み重ねが、Webサイトの品質を高めることに繋がるんですよね。
果ては、ブログの人気にも繋がるかもしれません。
ImageCompressorFXの特徴
ImageCompressorFXは、KotlinとJavaFXを使って作成した画像圧縮ツールです。
主に、以下の機能を持っています。
- 画像の入力ディレクトリを選択
- 画像の出力ディレクトリを選択
- 圧縮率の選択(0.1 〜 0.9)
- 画像の圧縮
- 圧縮具合をログで表示
- JPG/PNG/GIF形式の画像に対応
- 複数の画像を一括圧縮
シンプルな作りになっているため、比較的誰でも使いやすいと思います。
とりあえず、必要最低限の機能は持ち合わせています。
スポンサーリンク
ImageCompressorFXの使い方
ImageCompressorFXは、非常にシンプルな画像圧縮ツールですので…。
その使い方も簡単で、以下の手順で画像を圧縮できます。
- 1.入力ディレクトリを選択する
- 2.出力ディレクトリを選択する
- 3.圧縮率を選択する
- 4.圧縮開始ボタンをクリックする
- 5.圧縮が完了するのを待つ
- 6.完了メッセージがログに表示されたら、圧縮が完了
以上の手順で、画像の圧縮が完了します。
ねっ、簡単でしょ?
特に迷うこともなく、直感的に操作できると思いますよ。
ImageCompressorFXのダウンロード
ImageCompressorFXは、GitHubにてオープンソースで公開しています。
以下のリンクからダウンロードできますので、ぜひお試しください!
前提として、Javaの実行環境が必要です。
ちなみに、私はIntellij IDEAを使って開発しました。
Intellij IDEAを使っている方は、そのまま開いてビルドすれば使えると思います。
スポンサーリンク
画像圧縮アルゴリズム
ImageCompressorFXでは、画像圧縮にImageIOクラスを使用しています。
ImageIOクラスは、画像の読み込みや書き込みを行うためのクラスです。
ImageWriteParamを指定して、圧縮率を設定しています。
ちなみに、このアルゴリズムは、JPEG形式の画像に対して有効です。
PNG形式やGIF形式に対しては圧縮率は適用されず、単純にImageIOクラスで出力しているだけになります。
メインの画像圧縮処理は以下のようになっています。
意外とシンプルですよね。
// Compresses the image as a JPG file with the specified compression rate
private fun compressJpg(image: BufferedImage, compressionRate: Double, outputFile: File) {
val imageWriter = ImageIO.getImageWritersByFormatName("jpg").next()
val imageOutputStream = FileOutputStream(outputFile)
val imageWriteParam = imageWriter.defaultWriteParam.apply {
compressionMode = ImageWriteParam.MODE_EXPLICIT
compressionQuality = compressionRate.toFloat() // Compression rate between 0.1 and 0.9
}
imageWriter.output = ImageIO.createImageOutputStream(imageOutputStream)
imageWriter.write(null, javax.imageio.IIOImage(image, null, null), imageWriteParam)
imageOutputStream.close()
imageWriter.dispose()
}
今後の展望
今後の展望としては、このツールをMacアプリとして公開することを考えています。
Macアプリとして公開することで、より多くのユーザーに使っていただけるようになると思います。
その際、UI/UXの改善や機能の追加なども行っていきたいです。
おそらく、SwiftとSwiftUIを使ってMacアプリを開発することになるかな?
また、画像圧縮アルゴリズムの改善も検討しています。
より高度な画像圧縮アルゴリズムを導入することで、より高品質な画像圧縮を実現できるかもしれません。
Swiftでどのような画像圧縮アルゴリズムが使えるのか?
実際に、調査してみたいと思います。
できれば、マネタイズをしていきたいところです。
有料アプリなのか、サブスクリプションなのか?
利益を最大化するためには、どのような戦略が必要なのか?
これからじっくりと検討していきたいですね。
スポンサーリンク
まとめ
今回は、KotlinとJavaFXを使って画像圧縮ツール『ImageCompressorFX』を自作してみました。
シンプルな作りになってはいますが、結構実用性のあるツールになっていると思います。
画像圧縮は、Webサイトの表示速度を向上させるために重要な作業。
ImageCompressorFXを使って、画像の容量を軽くしてWebサイトの品質を高めてみてください!
もし使っていただけたのなら、ぜひ感想や改善点などを教えていただけると嬉しいです。
GitHubのIssueやPull Requestを使って、フィードバックを送っていただけると助かります。
ついでに、スターをつけていただけると、さらに嬉しいです!!
もちろん、私に直接連絡していただいても構いませんよ!
私は今後も、プログラミングを活用して様々なツールやアプリを作っていきたいです。
いやぁ、プログラミングで何かを作るって楽しいですよね!
自分で考えていたものを形にできるって、本当に素晴らしいスキルだと思います。
もっともっとプログラミングスキルを極めて、多くの人の役に立てるようなものを制作したいですよ。
それでは、また次回の記事でお会いしましょう!
ここまで読んでいただき、ありがとうございました!
関連リンク
スポンサーリンク
関連タグ
この記事に付けられているタグの一覧です。
タグをクリックすると、そのタグが付けられた記事の一覧を表示します。
SNSシェアのお願い
もし、この記事を気に入ってもらえたら…。
SNSへシェアしていただけると嬉しいです。
あなたのシェアは、非常に励みになります。
今後の更新に対するモチベーションにもつながります。
ぜひともよろしくお願いします。
スポンサーリンク
この記事を書いた著者
- 名前:鈴木俊吾(すずしん)
- 職業:マルチコンテンツクリエイター
- 生年月日:1987年4月8日(37歳)
- 出身地:茨城県
- 趣味:読書 / 音楽鑑賞 / チェス / MTG
- 資格:実用英語技能検定準2級 / 普通自動車運転免許 / .com Master BASIC / ダイエット検定2級 / EFSET 59 / etc.
大学卒業後、公務員試験に失敗し、数年の無職期間を経て、2018年に独立。
フリーランスのマルチコンテンツクリエイターとして活動しています。
メインの仕事は、ブロガー、個人開発ゲームクリエイター、Kindle作家、投資家。
スキル無し、人脈無し、資金無しの完全未経験からの人生大逆転を目指して、日々試行錯誤しながら奮闘中。
夢の実現を達成していく様子を、このブログで発信していきます。
詳細については、自己紹介をご覧ください。
満たされないあなたへ。人生を変えるセールスライティングの秘密、教えます。
あなたの心は、本当に輝いていますか?
年商10億を達成し、すべてを手に入れたはずの男。
だが、成功の先に待っていたのは、満たされない心と失われた輝き。
そんな彼が出会ったのは、業界のレジェンド、新田祐士。
彼との出会いが、人生を根底から変えた。
「真のセールスライティング」とは何か?
この3ヶ月講座では、スキルやノウハウだけではなく、心の奥底から人を動かす「本質的なセールス」の極意を学びます。
- お金はあるのに、なぜ満たされないのか?
- 自分の本当の魅力を引き出したい
- 一生ものの仲間と出会い、共に成長したい
そんな想いを抱えるあなたへ。
新田祐士×迫佑樹が贈る、魂を揺さぶる3ヶ月間。
今こそ、新しい世界への扉を開きませんか?