画像の容量を抑えたい
修正 2017/06/27
Jpeg画像の圧縮を、RBG Compressed ETC2 4bitsにしたら、一部の端末で処理できていなかった模様。
ということで、RGB Compressed DXT1に変更してみました。
参考にしたサイト様:
問題点
2Dで脱出ゲームを作ってると、大きいサイズの画像を100枚以上使ったりするので、容量が膨らんでしまうのが悩ましい。
元画像をできるだけjpegにして、画質も75%とか耐えれるギリギリまで下げたりしてたんだけど、あまり効果はなく。
そんな時に、教えてもらったのが、これ。
例えば、フォルダ上で39KBの画像。
これをunityに読み込むと、1.4MBまで膨らむ。 (単位に注目!)
そんなことになっていたのかー!ってビックリ。
原因と対策
どうやら、Unityに読み込む時に、圧縮フォーマットの設定で膨らんでしまうみたい。
ということで、そのフォーマットを適正なものに変更すればOK。
フォーマットの設定
アセットにあるjpeg画像を選択 - インスペクターでフォーマットを変更することができる。
Android jpegの場合
デフォルトだと、RBG Compressed ETC 4 bits になってる。
これを、ETC2に変更する。
overrideにチェックを入れて、RBG Compressed ETC2 4 bits RGB Compressed DXT1 にして、Applyを押す。
MipMapのチェックを外す
フォーマットを設定しても、まだ警告が残ってる場合。
Only POT texture can be compressed if mip-maps are enabled
ってな警告がでる。
ということで、Mip Mapsのチェックを外す。
警告が消えて、176.8KBとかなり減量できました。
フォーマットの種類について
これ、フォーマットの種類が色々あるけど、スマホの機種によって対応してないものもある。
未対応の場合は、読み込み時に違うフォーマットに変換されるので、その分処理が遅れるそうです。
ここに書いてるのは、素人がなんとなく、これ!で選択したものです。
Android pngの場合
pngの場合は、デフォルトがRBGAのETC2 8bitsになっているので、MipMapのチェックを外すだけ。
iOS jpegの場合
RBG Compressed ASTC 4x4 block に設定する。
iOS pngの場合
RBGA Compressed ASTC 4x4 block に設定する。
画像のサイズに注意
たとえば、431 x 69サイズの画像を RBGA Compressed ETC2 8bits にした場合
Only textures with width/height being multiple of 4 can be compressed to ETC2 format
という警告がでる。
要は、縦横のサイズを4のベキ乗にしてね。ということらしい。
いや、ベキ乗とか言われても・・・。
ということで、ざっくり計算!
4で割り切れる数字にすれば、いけるっしょ!
431 x 69 → 432 x 72 に変更したら、エラーは消えましたとさ♪