大反省会 #2

先日は、ZIPで対応できないファイル数になることを言いましたが、ここであえてZIPを作ると、JavaはZIPを標準サポートしていて、某Android用アプリでタイル画像を地図として閲覧することができます。
でも当然問題が出ます。

ZIPの制限

収められるファイル数に制限があります。このため画像とにらめっこして、エイヤッと画像を切るポイントを指定する必要があります。さらに言うと、トライアンドエラーにならざるを得ないです。
1画像で1ZIPパックのつもりで生成した後で、ZIPの制限に引っかかっていると、その画像を切って作り直す、ということになります。ひとつの処理に時間がかかりまくるような時のトライアンドエラーは、頭から煙が出そうです。

どんなにいっても2Gまで

MicroSDと考えると、2Gを超えるものは外部ストレージにおいておくこと自体が無理です。

JPEGの劣化とPNG最適化が必要

個々のタイル画像もできる限り小さくする必要があります。Androidのアプリが与えてもらえるメモリはかなり少ないですから。JPEGは、とりあえず品質を70にしました。60だと見てらんなくなる。あと、PNGについてもoptipngでできる限り最適化します。

PNGを小さくするのは時間がかかる

Androidがアプリに与えるメモリは、30Mとか、本当に少ないです。画像の最適化をしてやる必要があります。PNGを圧縮する optipng (-o7オプション)を使うと、半分ぐらいに最適化してくれました。しかし、これがとても時間がかかるのです。JPEGの品質を落とすのは、そんなに時間はかかりませんでした。