EPWINGを圧縮する (libdeflateで)

月曜日, 7月 01 2019 @ 08:30 午後 JST

投稿者: kazuhiro

今更な話ですが、EBライブラリに付属のebzipを使えば、EPWINGを圧縮したまま利用する事が可能です。ebzipで圧縮されたEPWINGは、EBライブラリだけでは無く、多くのEPWINGビューアが対応しています。

ebzipのオプションには圧縮レベルがあり、これは圧縮するチャンクの大きさに反映されます。最大値の5ではチャンクのサイズは64KiBです。ebzipでの圧縮にはzlibを利用していますが、ebzipの圧縮レベルとは別に、zlibにも圧縮レベルがあります。ebzipでは圧縮レベルに関係なく一律の値 (Z_DEFAULT_COMPRESSIONによって指定される値で、現在は6) を指定しています。

zlibの圧縮レベルを上げればもっと圧縮できるのではないかと思って試してみましたが、よくて1%強程度しか改善できませんでした。

その時点で諦めてもよかったのですが、zlib以外のライブラリを使ってみてはということで、圧縮率の改善が見込めそうなlibdeflateを使ってみました。

青空てにをは辞典
190309
広辞苑第五版
HONMON2
広辞苑第五版
HONMONS
日本語版ウィキペディア
Wikip_ja20190301
英語版ウィキペディア
Wikip_en20190301
非圧縮
1,764,730,880 220,059,648 69,834,752 33,236,779,008 112,939,145,216
ebzip -l 5
478,746,362 72,335,940 50,837,283 19,927,656,401 33,968,207,228
非圧縮との比 27.1% 32.9% 72.8% 60.0% 30.1%
ebuzip -l 5
20190630
470,542,862 72,172,845 50,771,067 19,897,758,310 33,530,220,494
ebzipとの比 98.3% 99.8% 99.9% 99.8% 98.7%
ebuzip -l 5
libdeflate
441,842,778 67,058,577 49,942,504 19,661,425,623 32,384,784,337
ebzipとの比 92.3% 92.7% 98.2% 98.7% 95.3%

結果は表のような感じで、悪くても1%以上は改善し、書籍によっては約7.7%改善しました。 ebuzip -l 5 20190630 となっているものはzlibの最大圧縮レベルを利用したケースです。 また、HONMON2の非圧縮のサイズはHONMON2を伸長した場合のものです。 微々たる物といえばそうなのですが、スマートフォンなど、ストレージに制限がある場合には有効かもしれません。

EB Library with UTF-8 supportでlibdeflateを利用できるようにしていますので、興味のある方はお試しください。

タグ: EPWING EB Library

コメント (0件)


Kazuhiro's blog
http://ikazuhiro.s206.xrea.com/article.php/20190701203038572