Blog Ranking

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

FC2ランキング フリーランスランキング

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

ツール

ブログ記事

2024年9月

SNSシェアのお願い

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

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

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

スポンサーリンク

知識の扉を広げよう!今すぐKindle Unlimitedで無料体験をスタート!

気になる本が読み放題、知識もインスピレーションも無限に広がります。
30日間無料体験を利用して、あなたの興味をもっと深めましょう!

>> Kindle Unlimitedを無料体験してみる!

読者に寄り添った高品質なブログ記事を作成します!

私のブログ記事作成サービスでは、読者に寄り添った分かりやすい文章で、貴社のサービスや情報を効果的に伝えます。
ブログの読者が共感しやすく、興味を持ち続けられる内容を提供し、アクセス数アップにも貢献します。

  • ブログ運営経験:SEOや読者分析に基づいた、実績ある記事作成が可能です。
  • 幅広いジャンルに対応:ビジネス、エンタメ、ライフハック、ITなどのジャンルをカバーし、専門性の高い内容でも分かりやすく表現します。
  • 安心のヒアリング・提案:クライアント様のご要望にしっかり寄り添い、構成案から執筆まで丁寧に対応いたします。

「貴社のメッセージをもっと多くの人に伝えたい」「SEO対策も意識した質の高い記事を作りたい」とお考えでしたら、ぜひ一度ご相談ください。

>> サービスの詳細ページを見る!

SNSをフォローしよう!

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

この記事を書いた著者

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

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

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

TOPに戻る