PNG再圧縮ツール
- 無料版ダウンロード商品¥ 0
- こた~んのうどん代(内容は無料版と同じです)ダウンロード商品¥ 500

ディレクトリ内,zipファイル内,VRMファイル内のPNGファイルを超圧縮するツールです. 画像の劣化を全く伴わずに,おおよそ15%~25%程度PNGファイルの容量を削減することができます. 特にVRChatやclusterで撮影した写真を圧縮したい場合に役に立ちます. VRMファイルの容量を削減して,ネットワーク転送に優しくしたい場合でも. お仕事においてもスクリーンショットをたくさん貼り付けた手順書やスクショエビデンスExcelファイル(.xlsx)の容量の削減に役に立つかもしれません(画像データをクリップボードからExcelに貼り付けて保存した場合,PNGで保存されるようです).
基本的な使用方法
コマンドプロンプト等を開き, > RecompressPng.exe 【ディレクトリ or zipファイル or VRMファイル】 としてください. 詳細なオプションは後述します.
オプション
-c, --count-only 対象zip・ディレクトリ内のPNGファイルの各容量,合計容量とファイル数を表示します. -d, --dry-run 圧縮動作は行いますが,その結果を保存しません.ベンチマークテスト用です. -f 0|1|2|3|4|m|e|p|b, --filters=0|1|2|3|4|m|e|p|b PNGのフィルタ戦略を指定します.-s 01234mepb と指定すると,全てを試すため,良い圧縮結果が得られますが,処理により時間を要するようになります. -h, --help 使用方法を表示します. -i 繰り返し回数, --num-iteration= 繰り返し回数 圧縮のための繰り返し回数を指定します.数が大きいほどより圧縮できる可能性がありますが,その分時間を要するようになります.デフォルト値は15です. -I 繰り返し回数, --num-iteration-large=繰り返し回数 大きな画像データに対するZopfliの繰り返し回数を指定します.大きな画像とは伸長後の画像データ長が200000Bytes以上のものを指します.デフォルト値は5です. -n スレッド数, --num-thread=スレッド数 最大同時実行可能スレッド数を指定します.-1を指定すると無制限となり,実行環境の最大数スレッドを使用します.他の作業も行いたい場合は,論理コア数の半分程度を指定してください.デフォルト値は-1,すなわち無制限です. -r, --replace-force 再圧縮後のPNGファイルのサイズが元のPNGファイルより大きくても置き換えを行います.デフォルトではオフになっています. -v, --verbose zopflipng.dllからの標準出力を許可します. --add-text-creation-time ファイルの更新時刻を"Creation Time"をキーとしたtEXtチャンクとしてPNGファイルに埋め込みます. --creation-time-format=時刻フォーマット文字列 "Creation Time"の時刻文字列を指定します.デフォルトはWindowsのエクスプローラで認識可能な形式である「yyyy:MM:dd HH:mm:ss.fff」です. --add-time ファイルの更新時刻をUTCに変換し,tIMEチャンクとしてPNGファイルに埋め込みます. --idat-size=サイズ(バイト単位) IDATチャンクのデータ部のサイズを指定します.0以下の値を指定した場合はzopflipngの出力をそのまま利用します(すなわちIDATチャンクが1まとめになっている).デフォルト値は-1です. --keep-chunks=NAME,NAME... 除去したくないチャンク名を指定します.zopflipngは画像に関係の無いチャンクは除去するので,保持したいチャンクがあれば指定してください(tEXtチャンク等). --keep-all-chunks 全てのチャンクを保持します.下記のように指定したのと同等です. --keep-chunks=acTL,bKGD,cHRM,eXIf,fcTL,fdAT,gAMA,hIST,iCCP,iTXt,pHYs,sBIT,sPLT,sRGB,tEXt,tIME,zTXt --keep-color-type 画像の形式を変化させないようにします.zopflipngはより画像サイズを小さくできるならば,32bit ARGB形式の画像を8bitパレット形式の画像にすることも,あるいはその逆を行うこともあります.表示される見た目には全く差異はありませんが,例えばパレット形式の画像を24bit RGB形式に変えられると,Edge等のドット絵ツールで開けなくなります. --lossy-transparent アルファ値が0(完全透過画素)のRGB値を0にします.見た目に変化はありません. --lossy-8bit 可能であれば16bit画像を8bit画像にします.見た目に変化はありません. --no-auto-filter-strategy 自動的なフィルタ戦略指定を無効化します. --no-keep-timestamp 元のファイルのタイムスタンプを保持せず,ファイル更新時刻が圧縮した時刻になります. --no-overwrite 再圧縮した結果で元のファイルを置き換えません.ディレクトリ指定時は別のディレクトリに,zipファイル指定時は別のzipファイルに,VRMファイル指定時は別のVRMファイルに結果を保存します. --no-use-zopfli 圧縮にzopfliを使用しません. --no-verify-image 圧縮前後での画像の比較を行わないようにします.画像比較で検出できるのは,主にフォーマットの違いです(RGBA形式がRGB形式になった場合など)
動作要件
.NET 6.0(RecompressPng-winx64.zipでは不要) https://dotnet.microsoft.com/download Microsoft Visual C++ 再頒布可能パッケージ https://support.microsoft.com/ja-jp/topic/%E6%9C%80%E6%96%B0%E3%81%AE%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%95%E3%82%8C%E3%82%8B-visual-c-%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89-2647da03-1eea-4433-9aff-95f26a218cc0
zopfliとは
Googleが開発したDeflate互換の圧縮アルゴリズムで下記の特徴があります. Deflate互換で高い圧縮率 当然,可逆圧縮 圧縮にはかなりの時間が必要(100倍ぐらいの時間) PNGの画像データ部もDeflate圧縮(zlibフォーマット)が用いられているので,zopfliにより,画像の劣化無くよりよい圧縮結果を得ることができます.
開発動機
VRChatやclusterでたくさん写真を撮るので,より圧縮して保存したいと考えて作りました. 特にVRChatやclusterのPNGファイルはアプリケーションの即応性のために,圧縮率が低めに設定されており(おそらくlibpng, zlibの最低の圧縮レベル),圧縮に関してはかなり改善の余地があります. zopfliの公式のリポジトリではzopflipngコマンドをビルド出来ますが,シェルスクリプト等で複数ファイルを並列に処理するのは面倒だったり,zipファイルからzipファイルへ一時ファイルを作成せずに保存するのができない,VRMファイルを扱うのが大変なため,それらを統括的に扱えるツールを,ということでC#で実装しました.
注意事項
zipファイルの処理は下記の通りです. 1. 元のzipファイル内のPNGファイルは超圧縮 2. PNGファイル以外は新しいzipファイルにコピー 「コピー」と表現しましたが,正確には新規にzipファイルを作り直しています. この作り直しには.NETのAPIで圧縮率優先としていますが,元々が7zip,または姉妹品であるZIPファイル再圧縮ツール(https://koturn.booth.pm/items/3064605)の圧縮率には到底かなうものではないため,このツールが作成するzipファイルの各エントリの圧縮率は悪くなることがあります. zipファイルとしての圧縮率を気にする場合は,7zipや姉妹品をご利用ください.
開発リポジトリ
https://github.com/koturn/RecompressPng
ライセンス
The MIT License (MIT) Copyright (c) 2020 koturn Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.