AutoImageCompresserの制作

2020-02-22 portfolio booth csharp oss vrchat windows

OGP

背景

聞く話によると、VRChatのスクリーンショットは モバイル回線/OneDrive等で同期する事に対して重すぎるらしい。

VRChatのスクリーンショットは基本的に1920x1080でPNG。 色情報に対してのエントロピーが高いVRChatの画像は実に1.5-2.5MB有る。

これが複数枚となると、なるほど。納得せざるを得ない。 「そもそも色情報に対してのエントロピーの高いデータはJPGで圧縮するべき」 という議論すらあるだろう。

そこで、 「同期ソフトウェアの前段で非可逆圧縮や解像度変更を行うソフトウェア」 を入れようと考えた。

また、汎用性の為以下を指定可能にすればよいだろう。

  • 入力 (glob)/出力フォルダ
  • 圧縮フォーマット (PNG/JPG)
    • 圧縮品質 (JPGのみ)
  • 横最大px長, 縦最大px長, 最大辺最大px長
  • 動作モード (常駐/差分更新/両方)

実装

差分更新が要件に有るため、 DirectoryのListを得てその差分を取る様な実装ではなく、 fsnotifyの様にファイルシステムと密に居られる実装が良いだろう。

また背景より、Windowsのみがターゲットで有るため、 プラットフォーム依存なフレームワークに依存できる。

その為、FileSystemEventHandlerが使えるC#で書いた。

(ref: System.IO FileSystemEventHandler Microsoft Docs )

また、煩雑なGUIを追加したくない為、iniで設定を管理する。

VRChat用の設定  default.configure.ini を標準で持たせた。

使い方

 yanorei32/autoimagecompresser

Special thanks

Idea, Logo: @FUMI23_VRC

Relevant Topics

MultiShortcutの制作

2020-02-15 portfolio booth csharp oss vrchat windows

複数のショートカットをまとめて起動するショートカットを作成するアプリケーション Read More

VRChat RejoinToolの制作

2019-08-03 portfolio booth csharp oss vrchat windows

VRChatのログをパースしゲーム内インスタンス操作を簡便化するソフトウェア Read More

MacBook 2017にTripleBoot環境を整えた話

2019-12-31 note debian macbook pc windows

WindowsとLinuxとmacOS、それぞれの検証環境がほしくなった為取り組み Read More

GBA Brainfuckの制作

2019-11-27 portfolio c game oss

GAMEBOY ADVANCEでBrainfuckを書きたくなった為制作 Read More

GSI4Dの制作

2018-11-08 portfolio javascript oss userscript

検索結果から自分の気に入らないサイトを除去するUserScript Read More


Recent Posts

PSXITA on PC

2022-03-26 2022-03-30 note arch pc

PS4向けArch LinuxのPCへのインストール Read More

MDR-100A メンテナンス

2020-07-09 note audio device repair

ヘッドホンから異音がした為、いじった Read More

Realme X2 Proの導入

2020-07-09 note android device smartphone

安く速いスマートフォンを導入した Read More

独自ページからHugoへ乗り換え

2020-06-30 note hugo web

自前フレームワークからHugoへの乗り換え。その利点と欠点。 Read More

AutoImageCompresserの制作

2020-02-22 portfolio booth csharp oss vrchat windows

軽快なファイル同期 (スクリーンショット想定) の為の画像圧縮デーモン Read More