画像圧縮の基本(JPEG・PNG・WebPの違いと使い分け)
画像圧縮の基本JPEG・PNG・WebPの違いと使い分け
はじめに
Webサイトやアプリを作るとき、画像をどの形式で保存すればいいか迷ったことはありませんか?
JPEG、PNG、WebP…種類が多くて混乱しますよね。でも、それぞれの特徴を理解すれば、「どの場面でどれを使うか」が自然とわかるようになります。
この記事では、3つの画像形式の仕組みと使い分けをやさしく解説します。
画像圧縮とは?
なぜ圧縮が必要なの?
デジタル写真はそのままでは非常に大きなデータ量になります。Webサイトで重い画像を使うと…
- ページの読み込みが遅くなる
- ユーザーが離脱しやすくなる
- サーバーの通信コストが増える
そこで「画像圧縮」を使って、画質をなるべく保ちながらファイルサイズを小さくします。
圧縮の2種類:可逆と非可逆
可逆圧縮(Lossless)
元のデータを完全に復元できる圧縮。画質が劣化しない代わりに、ファイルサイズは大きくなりやすい。ZIPファイルの解凍と同じ仕組みです。
非可逆圧縮(Lossy)
一部のデータを削除して圧縮。ファイルサイズは大幅に小さくなりますが、元には戻せません。人間の目に気づきにくい部分を削ります。
JPEG — 写真の王者
写真の保存に特化して開発された形式。非可逆圧縮によりファイルサイズを大幅に削減できます。「品質(Quality)」パラメータ(0〜100)で圧縮率を自由に調整できるのが特徴です。
- ファイルサイズが非常に小さい
- 写真の圧縮に最適
- 全ブラウザ・デバイスで対応
- 品質を自由に調整できる
- 透明(透過)を表現できない
- 何度も保存すると画質が劣化
- 文字・線・イラストは不向き
- アニメーション非対応
向いている画像
PNG — 品質と透過の定番
可逆圧縮を使うため、何度保存しても画質が劣化しません。また「透明(アルファチャンネル)」を表現できるのがJPEGとの大きな違いです。ロゴやイラストに最適です。
- 画質が劣化しない
- 透過(透明)に対応
- 文字・ロゴ・イラストに最適
- 何度保存しても品質が保たれる
- 写真はファイルサイズが大きくなる
- アニメーション非対応(※APNG除く)
- Webの表示速度に影響が出やすい
向いている画像
WebP — 現代Webの最適解
Googleが開発した比較的新しい形式。「JPEGとPNGの良いとこどり」を目指しており、JPEGより約25〜35%小さいファイルサイズで同等以上の画質を実現します。透過もアニメーションも対応しています。
- JPEGより約25〜35%ファイルが小さい
- PNGより約25%ファイルが小さい
- 透過・アニメーションに対応
- 写真もイラストも両対応
- 主要ブラウザ全て対応済み
- IE(古いブラウザ)は非対応
- 一部デザインツールで編集しにくい
- Windowsフォトビューアなど一部アプリで開けないことがある
向いている画像
3形式の比較まとめ
| 項目 | JPEG | PNG | WebP |
|---|---|---|---|
| 圧縮方式 | 非可逆(Lossy) | 可逆(Lossless) | 両方対応 |
| ファイルサイズ | 小さい | 大きい | 最も小さい |
| 画質の劣化 | あり(調整可) | なし | ほぼなし |
| 透過(透明) | 非対応 | 対応 | 対応 |
| アニメーション | 非対応 | 非対応 | 対応 |
| 写真向き | ◎ 最適 | △ 不向き | ◎ 最適 |
| イラスト・ロゴ向き | △ 不向き | ◎ 最適 | ○ 良い |
| ブラウザ対応 | ◎ 全対応 | ◎ 全対応 | ○ 主要ブラウザ対応 |
実践!使い分けガイド
シーン別おすすめ
| シーン | おすすめ | 理由 |
|---|---|---|
| Webサイトの写真 | WebP(次点: JPEG) | ファイルが小さく読み込みが速い |
| 会社ロゴ・サイトロゴ | PNG / SVG | 透過対応・劣化なし |
| スクリーンショット | PNG | テキストが鮮明に見える |
| 商品画像(EC) | WebP(次点: JPEG) | 画質と速度のバランスが良い |
| バナー(テキスト入り) | PNG / WebP | 文字がにじまない |
| Emailの添付写真 | JPEG | 互換性が高い |
| アプリのアイコン | PNG / WebP | 透過・小サイズに対応 |
| GIFアニメの代替 | WebP | ファイルサイズが大幅に小さい |
判断フローチャート
コードでの扱い方
HTMLで画像を埋め込む
WebPを優先しつつ、非対応ブラウザにはJPEGを提供するには <picture> タグを使います。
<!-- pictureタグを使ったフォールバック --> <picture> <!-- WebP対応ブラウザはこちらを使う --> <source srcset="image.webp" type="image/webp"> <!-- 非対応ブラウザはJPEGに切り替わる --> <source srcset="image.jpg" type="image/jpeg"> <!-- 最後はimg要素(必須) --> <img src="image.jpg" alt="説明文"> </picture>
こう書くことで、WebP対応ブラウザでは高速なWebPが、非対応ブラウザでは互換性の高いJPEGが自動的に表示されます。
PythonでWebPに変換する
Pythonの Pillow(PIL)ライブラリを使えば数行で変換できます。インストールは pip install Pillow です。
from PIL import Image # JPEG を WebP に変換(非可逆、quality=85 が一般的) img = Image.open("photo.jpg") img.save("photo.webp", "WEBP", quality=85) # PNG を WebP(透過あり)に変換(可逆) img = Image.open("logo.png") img.save("logo.webp", "WEBP", lossless=True) # フォルダ内の全JPEGをまとめて変換 import os for filename in os.listdir("./images"): if filename.endswith(".jpg"): img = Image.open(f"./images/{filename}") name = filename.replace(".jpg", ".webp") img.save(f"./output/{name}", "WEBP", quality=85) print(f"変換完了: {name}")
まとめ
ファイルが小さく世界中で使える万能形式。ただし透過非対応で、保存のたびに画質が劣化する。
劣化なしで保存でき透過に対応。ロゴ・イラスト・スクショに最適。写真はサイズが大きくなる。
JPEGとPNG両方の良さを持ち、ファイルサイズも最小。新しいプロジェクトはこれを優先しよう。
この記事が画像形式の理解に役立てば嬉しいです。