サイトを軽くする方法として一番効果的な方法は画像を圧縮することです。
画像は、ページをダウンロードする際のデータ量の大部分を占めることがよくあります。そのため、画像を最適化するとデータ量が大幅に減ってパフォーマンスが改善することが少なくありません。ブラウザがダウンロードしなければならないデータ量が減るほど、クライアントの帯域幅の競合が少なくなり、ブラウザでコンテンツをダウンロードして画面に表示するまでの所要時間を短縮できます。
画像を最適化する | PageSpeed Insights
しかし、一般的には画像を圧縮すると画質が悪化するというのが常識です。
そこで今回はスクリーンショットなどで利用するPNG画像をローカル環境ですばやく圧縮する方法を紹介します。
目次
パンダで有名なTinyPNG
画像の圧縮といえばパンダで有名なTinyPNGが有名です。
TinyPNG – Compress PNG images while preserving transparency
TinyPNGはWordPress用のプラグインも用意されていて手軽に使うことができます。
TinyPNGのメリット
圧縮エンジンにPageSpeed Insightsで推奨されているpngquantを使用しているため、利用するとスピードテストのスコアが上がります。
また、TinyJPGもありJPG画像も対応しています。
TinyPNGのデメリット
しかしデメリットもあります。
オンラインのTinyPNGはサーバーにアップロードして圧縮するため、1回で20ファイルまで最大5MBまでとなっています。
大量の画像を一括で圧縮したい場合は不向きです。
WordPress用プラグインは月500枚まで無料でそれ以上は有料になる。
WordPressは1枚の画像をアップするとリサイズした画像を5~6枚くらい自動生成します。
つまり1ヶ月で500枚使える予定が100枚程度になることもあります。
ローカル環境で高速に圧縮できるPngyu
PngyuはTinyPNGと同様にpngquantを使用しているPNG圧縮ソフトです。
インストール不要で起動することができ不要になれば削除するだけでレジストリなども影響しません。
Pngyuは簡単なマウス操作のみで複数のPNG形式の画像ファイルを一括で圧縮し、大幅なファイルサイズ削減を実現するツールです。
PNGファイルの圧縮エンジンにはImageAlphaやTinyPNGでも使用されている pngquantを使用しています。
pngquantでは24bit/32bitフルカラーのPNGファイルを優秀な減色アルゴリズムを用いて8bitインデックスカラーに変換することで、 圧縮を実現します。
MacにもWindowsにも対応しています!
pngquantを最新にする
ところがこのPngyuは2013年くらいで更新が止まっているようです。
ということで使用されているpngquantを最新版に更新しましょう。
pngquantはこちらのサイトからダウンロードすることができます。
OSがWindowsの場合はBinary for Windows をクリックしてダウンロードしてください。
ダウンロードしたpngquant.exeを
Pngyuのpngquantフォルダ内にあるpngquant.exeに上書きします。
これでpngquant.exeが最新版になりました。
Pngyuの使い方
使い方は簡単です。デフォルト設定では圧縮した画像は上書き保存されます。
圧縮したい画像やフォルダをドラッグアンドドロップしてCompress Startを押すだけです。
あっという間に圧縮が完了してこの場合49%軽くなりました。
Customをクリックすると画像の圧縮レベルや、別フォルダに保存したりファイル名を変更したりすることもできます。
並列処理させて高速化
デフォルトの設定では画像を1枚ずつ圧縮していきます。
大量の画像を圧縮したい場合はCPUのコアをすべて使って並列処理させることも可能です。
左上のFileタブからPreferencesをクリックします。
Compress N file at onceの項目を1から最大値まで上げるとCPUを100%使用して高速に圧縮処理させることが可能です。
アップロード済の画像はFTPで再アップロードする
今までにアップロードした画像はFTPで一旦ローカルにダウンロードして圧縮して再度アップロード(上書き)すると良いと思います。
FileZillaを使ってSSH(SFTP)接続で安全にファイル転送する方法アップロードした画像は
ドメイン名/wp-content/uploads
のフォルダにアップロードした年月(設定による)で分かれています。
これを一旦ローカルにすべてダウンロードして、Pngyuで圧縮したあと再度アップロードすることでPNG画像はすべて圧縮された状態になります。
JPG画像はどうする?
JPG画像は基本的に撮影した写真だと思います。
これはJPG画像は圧縮しすぎるとブロックノイズがでて荒くなることがあるので、あまり極端に圧縮しないほうが良いかと思います。