Blog Ranking

ブログランキングに参加しています。
1日1回バナーをクリックして応援していただけると嬉しいです。

フリーランスランキング

KotlinとJavaFXで画像圧縮ツール『ImageCompressorFX』を自作してみた!

Tags: #プログラミング #Kotlin #JavaFX #画像圧縮 #ツール #ImageCompressorFX #ブログ記事 #2024年9月

Published on:

Updated on:

※記事によっては、本文に広告のリンクが含まれることがあります。

KotlinとJavaFXで画像圧縮ツール『ImageCompressorFX』を自作してみた!

こんにちは、鈴木俊吾(すずしん)です。

ブログを運営していると、画像の容量を軽くするために画像圧縮を行うことがありますよね?
私も他のところで提供されている画像圧縮ツールを使っていましたが…。
何だか自分で作ってみたくなりました!

そこで、KotlinJavaFXを使って画像圧縮ツールImageCompressorFX』を自作してみました!
シンプルな作りになってはいますが、実用性のあるツールになっていると思います。

この『ImageCompressorFX』は、GitHubにて公開しています。
ぜひ、ご自身の環境でお試しください!
以下で詳しく説明していきます。

画像圧縮の重要性

画像圧縮は、Webサイトの表示速度を向上させるために重要な作業。
画像の容量を軽くすることで、ページの読み込み速度が向上します。
その結果、ユーザーのストレスを軽減できます。

ページ全体の表示速度のボトルネックになるのは、画像の容量が大きい場合が多いです。
そのため、画像圧縮はWebサイトの運営において欠かせない作業と言えるでしょう。

こういう一見地味な作業。
こうした作業の積み重ねが、Webサイトの品質を高めることに繋がるんですよね。
果ては、ブログの人気にも繋がるかもしれません。

ImageCompressorFXの特徴

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を使って、フィードバックを送っていただけると助かります。
ついでに、スターをつけていただけると、さらに嬉しいです!!
もちろん、私に直接連絡していただいても構いませんよ!

私は今後も、プログラミングを活用して様々なツールやアプリを作っていきたいです。
いやぁ、プログラミングで何かを作るって楽しいですよね!
自分で考えていたものを形にできるって、本当に素晴らしいスキルだと思います。
もっともっとプログラミングスキルを極めて、多くの人の役に立てるようなものを制作したいですよ。

それでは、また次回の記事でお会いしましょう!
ここまで読んでいただき、ありがとうございました!

関連リンク

関連タグ

この記事に付けられているタグの一覧です。
タグをクリックすると、そのタグが付けられた記事の一覧を表示します。

#プログラミング #Kotlin #JavaFX #画像圧縮 #ツール #ImageCompressorFX #ブログ記事 #2024年9月

SNSシェアのお願い

もし、この記事を気に入ってもらえたら…。
SNSへシェアしていただけると嬉しいです。

あなたのシェアは、非常に励みになります。
今後の更新に対するモチベーションにもつながります。

ぜひともよろしくお願いします。

この記事を書いた著者

鈴木俊吾(すずしん)
  • 名前:鈴木俊吾(すずしん)
  • 職業:マルチコンテンツクリエイター
  • 生年月日:1987年4月8日(37歳)
  • 出身地:茨城県
  • 趣味:読書 / 音楽鑑賞 / チェス / MTG
  • 資格:実用英語技能検定準2級 / 普通自動車運転免許 / .com Master BASIC / ダイエット検定2級 / EFSET 59 / etc.

大学卒業後、公務員試験に失敗し、数年の無職期間を経て、2018年に独立。
フリーランスのマルチコンテンツクリエイターとして活動しています。
メインの仕事は、ブロガー、個人開発ゲームクリエイター、Kindle作家、投資家。
スキル無し、人脈無し、資金無しの完全未経験からの人生大逆転を目指して、日々試行錯誤しながら奮闘中。
夢の実現を達成していく様子を、このブログで発信していきます。

詳細については、自己紹介をご覧ください。

SNSをフォローしよう!

最新情報をいち早く知るために、私のSNSをフォローしてください!

TOPに戻る

アクセスカウンター

Total:

    Start Date: