VRCImageHelper
VRCImageHelper copied to clipboard
JPEG圧縮時のサンプリング指定をしたい
いつもお世話になっております。 Ver 0.9.7を利用させていただいております。
要望なのですが、JPEG圧縮時のサブサンプリング指定できるように実装していただけないでしょうか。 今の処理だと4:2:0でエンコードしていると思うのですが、赤色がくすんでしまうので、 現状は(容量は大きいですが)PNGで保存しています。(4:4:4で保存できればベストです。)
個人的にソースコードを確認・いじってみたものの、 処理に使用している.NET標準のJPEGエンコーダーではサブサンプリング指定はできないようでした。 ffmpegならできるのかと思いましたが、こちらはドキュメント漁ってもよくわからない状態でした。
Issueの投稿するのが初めてなので、不躾な投稿となってしまっていたら申し訳ありません。 よろしくお願いします。
メモ
-
https://www.nuget.org/packages/BitMiracle.LibJpeg.NET/ でできそうな気がする?
- https://bitmiracle.github.io/libjpeg.net/help/articles/KB/special-color-spaces.html
- ↑を使ってる実装例 https://github.com/danielgindi/Codenet/blob/main/Drawing.Encoders.Jpeg/Encoders/JpegEncoder.cs
- MITLなのでこのファイルもらってきて拡張したらできそう
- 設定画面でどう指定するとよいか
- オプションのとこJPEGならかわりにドロップダウンとかにする?
-
ffmpegで試してみる
- もしかすると
-pix_fmt yuvj444pでいい?- デフォルトで444っぽい
- https://github.com/test-images/png/blob/main/202105/cs-black-000.png で試す
-
-pix_fmt yuvj420p -
yuvj444p - 指定なし
-
- もしかすると
-
やること
- JPEGのエンコードもffmpegを利用するようにする?
- JPEG と JPEG(高) とかに分ける?
- 同じ数値だとffmpegのmjpegのがザラついてる気がする
- ffmpegを必須にするかどうか
- 分けよう
- JPEG と JPEG(高) とかに分ける?
- 設定画面まわりの変更
- JPEGのエンコードもffmpegを利用するようにする?
-
とりあえずffmpegにはできたが、色空間はこれで正しいのかがよくわからない