BPGの大元、libbpg(本体ソース)
2014/12/23にsusieプラグインができてたので、ローカルだとsusieプラグイン対応ソフトで見れる→ifbpg、2015/01/15に0.9.5対応。
susieプラグインだとアニメーションが見れないので、付属のbpgview.exeで開く必要有り。
2015-11-02、現時点で0.9.6が最新。
※x265はアルファ付きとモノクロは非対応エンコーダーからjctvcコーデックが削除されており、どうやら完全にx265のみでエンコード出来るようになった(らしい)。
Q、BPGはステマ? A、ライセンス問題が残ってるので、ステマしても特に誰か得するとは思えません。
Q、アドウェアとか仕込まれる? A、x265/HEVCに何か仕込めるのであれば、すでにffmpegで仕込まれてると思います。
Q、じゃあ何でこんな話題に? A、よくわかりません。が、Win10でx265/HEVCが標準搭載されるので(予定)、それへの期待も込みってことでしょうか。→標準搭載されるとsusieプラグインが無くても画像が見れて、画像編集ソフトも対応せざるを得なくなる可能性が高い。
Q、画像扱う側からしたら容量減るくらいじゃ使わないよ。 A、鯖運営側が悲鳴上げてるからgoogleがWebP作り出しました。
BPGのコマンドラインとか(クリックで開く)
BPG Image Encoder version 0.9.6
usage: bpgenc [options] infile.[jpg|png]
Main options:
-h show the full help (including the advanced options)
-o outfile set output filename (default = out.bpg)
-q qp set quantizer parameter (smaller gives better quality,
range: 0-51, default = 29)
-f cfmt set the preferred chroma format (420, 422, 444,
default=420)
-c color_space set the preferred color space (ycbcr, rgb, ycgco,
ycbcr_bt709, ycbcr_bt2020, default=ycbcr)
-b bit_depth set the bit depth (8 to 12, default = 8)
-lossless enable lossless mode
-e encoder select the HEVC encoder (x265, default = x265)
-m level select the compression level (1=fast, 9=slow, default = 8)
Animation options:
-a generate animations from a sequence of images. Use %d or
%Nd (N = number of digits) in the filename to specify the
image index, starting from 0 or 1.
-fps N set the frame rate (default = 25)
-loop N set the number of times the animation is played. 0 means
infinite (default = 0)
-delayfile file text file containing one number per image giving the
display delay per image in centiseconds.
Advanced options:
-alphaq set quantizer parameter for the alpha channel (default = same as -q value)
-premul store the color with premultiplied alpha
-limitedrange encode the color data with the limited range of video
-hash include MD5 hash in HEVC bitstream
-keepmetadata keep the metadata (from JPEG: EXIF, ICC profile, XMP, from PNG: ICC profile)
-v show debug messages
補足としては、jpgは100が最高画質で0が最低画質だけど、bpgは0が最高画質で51が最低画質。
BPG Image Decoder version 0.9.6
usage: bpgdec [options] infile
Options:
-o outfile.[ppm|png] set the output filename (default = out.png)
-b bit_depth PNG output only: use bit_depth per component (8 or 16, default = 8)
-i display information about the image
BPGのbat作成(クリックで表示)、2014/12/27、2chで書かれてたbatに処理時間をプラスしたのを掲載
┣
[嫌儲BPGスレ]ドラッグアンドドロップでbpgファイルに変換.batに処理時間をプラスした.bat
┣
bpg_create_x265.bat、
x265の記述が見たい場合クリックで表示。
@echo off
cd /d %~dp0
rem SET T=%TIME:/=%
SET T=%TIME: =0%
SET H=%T:~0,2%
SET M=%T:~3,2%
SET S=%T:~6,2%
SET Mi=%T:~9,2%
rem --8進対策
set /a H=1%H%-100
set /a M=1%M%-100
set /a S=1%S%-100
set /a Mi=1%Mi%-100
for %%q in (%*) do (
echo %%~nxq をbpgに変換中...
echo 変換前 %%~zq バイト
bpgenc.exe -o "%%~dpq%%~nq.bpg" -f 444 -e x265 -m 1 %%q
for %%i in ("%%~dpq%%~nq.bpg" ) do echo 変換完了! %%~zi バイト
echo;
)
SET T1=%TIME: =0%
SET H1=%T1:~0,2%
SET M1=%T1:~3,2%
SET S1=%T1:~6,2%
SET Mi1=%T1:~9,2%
rem --8進対策
set /a H1=1%H1%-100
set /a M1=1%M1%-100
set /a S1=1%S1%-100
set /a Mi1=1%Mi1%-100
rem --終了時間の計算
SET /a H2=H1-H
SET /a M2=M1-M
if %M2% LSS 0 set /a H2=H2-1
if %M2% LSS 0 set /a M2=M2+60
SET /a S2=S1-S
if %S2% LSS 0 set /a M2=M2-1
if %S2% LSS 0 set /a S2=S2+60
SET /a Mi2=Mi1-Mi
if %Mi2% LSS 0 set /a S2=S2-1
if %Mi2% LSS 0 set /a Mi2=Mi2+100
set H2=0%H2%
set H2=%H2:~-2%
set M2=0%M2%
set M2=%M2:~-2%
set S2=0%S2%
set S2=%S2:~-2%
set Mi2=0%Mi2%
set Mi2=%Mi2:~-2%
echo 開始時間:%T%
echo 終了時間:%T1%
echo 経過時間:%H2%:%M2%:%S2%.%Mi2%
pause
exit
┣
bpg_create_jctvc.bat、jctvcの記述が見たい場合クリックで表示。
@echo off
cd /d %~dp0
rem SET T=%TIME:/=%
SET T=%TIME: =0%
SET H=%T:~0,2%
SET M=%T:~3,2%
SET S=%T:~6,2%
SET Mi=%T:~9,2%
rem --8進対策
set /a H=1%H%-100
set /a M=1%M%-100
set /a S=1%S%-100
set /a Mi=1%Mi%-100
for %%q in (%*) do (
echo %%~nxq をbpgに変換中...
echo 変換前 %%~zq バイト
bpgenc.exe -o "%%~dpq%%~nq.bpg" -q 28 -f 444 %%q
for %%i in ("%%~dpq%%~nq.bpg" ) do echo 変換完了! %%~zi バイト
echo;
)
SET T1=%TIME: =0%
SET H1=%T1:~0,2%
SET M1=%T1:~3,2%
SET S1=%T1:~6,2%
SET Mi1=%T1:~9,2%
rem --8進対策
set /a H1=1%H1%-100
set /a M1=1%M1%-100
set /a S1=1%S1%-100
set /a Mi1=1%Mi1%-100
rem --終了時間の計算
SET /a H2=H1-H
SET /a M2=M1-M
if %M2% LSS 0 set /a H2=H2-1
if %M2% LSS 0 set /a M2=M2+60
SET /a S2=S1-S
if %S2% LSS 0 set /a M2=M2-1
if %S2% LSS 0 set /a S2=S2+60
SET /a Mi2=Mi1-Mi
if %Mi2% LSS 0 set /a S2=S2-1
if %Mi2% LSS 0 set /a Mi2=Mi2+100
set H2=0%H2%
set H2=%H2:~-2%
set M2=0%M2%
set M2=%M2:~-2%
set S2=0%S2%
set S2=%S2:~-2%
set Mi2=0%Mi2%
set Mi2=%Mi2:~-2%
echo 開始時間:%T%
echo 終了時間:%T1%
echo 経過時間:%H2%:%M2%:%S2%.%Mi2%
pause
exit
jctvcは実質たぶん使えなくなった。
中身書くと長いのでクリックで表示をクリックで表示するようにした。
bpgenc.exe -o "%%~dpq%%~nq.bpg" [-f 444 -e x265 -m 1] %%q
bpgenc.exe -o "%%~dpq%%~nq.bpg" [-q 28 -f 444] %%q
[]の中はコマンドなのでご自由にどうぞ。
処理時間は
Windowsのバッチでの経過時間の計測方法を参照してマイクロ秒をプラスした。
変換した画像はアッパードロップゾーンでアップロード出来るよ!
さらに詳細な比較。
赤が苦手なJPEGより赤が苦手なBPG?←デフォルトカラーがYCbCrの4:2:0なので、色数が減ってる状態で比較してた勘違い比較。
画像テスト(クリックで開く)
最低画質
低画質
中画質
高画質
最高画質
原版画質
オリジナル
オリジナル png
1463KB
アルファ画像テスト(クリックで開く)、補足:全体見えないけど透過画像
最低画質
圧縮率0(最低画質) jpg
32KB
Photoshop CC Web用に保存
圧縮率0(最低画質) jpg
13KB
XnConvert、動作何も無し
圧縮率51(最低画質) bpg
4KB
YCbCr 4:4:4
低画質
圧縮率25(低画質) jpg
57KB
Photoshop CC Web用に保存
圧縮率25(低画質) jpg
34KB
XnConvert、動作何も無し
圧縮率37(低画質) bpg
20KB
YCbCr 4:4:4
お腹の雪の模様がつぶれてる。
中画質
圧縮率50(中画質) jpg
87KB
Photoshop CC Web用に保存
圧縮率50(中画質) jpg
50KB
XnConvert、動作何も無し
圧縮率25(中画質) bpg
60KB
YCbCr 4:4:4
高画質
圧縮率75(高画質) jpg
158KB
Photoshop CC Web用に保存
圧縮率75(高画質) jpg
71KB
XnConvert、動作何も無し
圧縮率12(高画質) bpg
178KB
YCbCr 4:4:4
最高画質
圧縮率100(最高画質) jpg
366KB
Photoshop CC Web用に保存
圧縮率100(最高画質) jpg
306KB
XnConvert、動作何も無し
圧縮率0(最高画質) bpg
334KB
YCbCr 4:4:4
lossless(無劣化画質) bpg
269KB
YCbCr 4:4:4
オリジナル png
111KB
アルファサイズ肥大化
アルファ無しから圧縮率100 jpg
358KB
Photoshop CC Web用に保存
アルファ無し オリジナル png
112KB
アルファ無し 圧縮率0 bpg
314KB
YCbCr 4:4:4
アルファ付き 圧縮率0 bpg
334KB
YCbCr 4:4:4
アルファ無し lossless bpg
255KB
YCbCr 4:4:4
アルファ付き lossless bpg
269KB
YCbCr 4:4:4
画像テスト4(クリックで開く)、補足:全体見えないけど透過画像
-q 40 bpg
17.88 KB
YCbCr 4:4:4
-q 32 bpg
47.69 KB
YCbCr 4:4:4
-q 24 bpg
139.3 KB
YCbCr 4:4:4
-q 16 bpg
230.62 KB
YCbCr 4:4:4
オリジナル png
118.07 KB
アニメーション画像テスト5(クリックで開く)※画像クリックでアニメーション再生ページに飛ぶようにした。
bpgenc.exe -o test.bpg -e x265 -m 1 -fps 10 -a D:\Myピクチャ\gif\poppins\dearspopp%2d.png
jctvc -fps 10 bpg
55KB
x265 -m 1 -fps 10 bpg
68KB
x265 -m 1 -fps 24 bpg
125KB
x265 -m 1 -fps 10 bpg
36KB
jctvc bpg
23KB
jctvc bpg
29KB
jctvc bpg
28KB
アルファ付き(透明部分有り)のをエンコードしたら100%壊れてる。怖い。
昔のgif用画像を使っているのだが、なぜか透過扱いされててx265エンコード出来ないのが多くてめんどくさい。
画像の出典わからんの多い。
ドット絵ミクでsm12855300と東方ボスラッシュあたり。
アニメーション画像テスト6(クリックで閉じる)※画像クリックでアニメーション再生ページに飛ぶようにした。
bpgenc.exe -o test.bpg -f 444 -fps 4 -a E:\Myピクチャ\gif\test\mikuwalk_%4d.png
x265 bpg
13KB
x265 bpg
23KB
アルファ付きでも0.9.6でエンコード出来るようになった。
しかしカンバスサイズを全画像同一にしても、透過部分を勝手にトリミングした上でエンコードされる。
トリミングした上でなぜか横に並べるため、右側にゴーストが出てくる。これに関しては今後のアップデートに期待するしかなさそう。
勝手に考えるbpgの今後の課題。
エンコード・デコード時間は当然の話なので割愛。
アルファ付きの画像の場合、-q8くらいからlosslessよりもファイルサイズが大きくなる。そうなるとlosslessで再エンコードするようなオプションが欲しい。
個人的な期待はデジカメでの標準形式です。
同じファイルサイズで高画質なら当然bpgの方がいい。でもエンコード時間がi7でも2秒とかのレベルだから相当厳しいと思う。
更新履歴
2015/01/01、iPhone4Sと6だと重くて開けないので、スマホ系はjs読み込まないようにした。
2014/12/31、index.htmlからbpg_test.htmlに変更。
2014/12/29、配置を色々変えた。
2014/12/26、twitterで-f 444付ければいいんじゃない?と言われてカラーフォーマットがYCbCrだと気づいたので、エンコードしなおしてみた。
2014/12/20、テストの画像をちょっと見やすくした。
┗bat作成を追加。
スペシャルサンクス、GigazineさんのBPG紹介記事が変なので、技術的に検証してみた所…なんと!、新画像フォーマット BPG は 可逆圧縮もすばらしいことが判明
BPGのもう少し詳しい検証とまとめ ※オリジナル画像の時点で画質が劣化してるので、画質の比較にはならず