勉強したことのメモ.

Webエンジニア / プログラマが勉強したことのメモ。

ブラウザがWebP対応の場合はそのまま表示し、非対応の場合はjpg/png画像を表示させる方法

ページ表示時にブラウザがWebP画像に対応している場合はそのまま表示し、非対応の場合はjpg/png画像を表示させたい。調べたところHTMLで対応する方法とhtaccessファイルで対応する方法がある模様。以下に対応方法をメモ。

 

HTMLで対応する方法

ソースコード

<picture>
    <source srcset="001.webp" type="image/webp">
    <img src="001.jpg">
</picture>

メリットとデメリット

後述するhtaccessファイルでの対応と違い、ページ毎に個別に対応できるのがメリット。

ただ、ページ数が多い場合は変更する個所も増えるのがデメリット。

 

htaccessファイルで対応する方法

ソースコード

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_ACCEPT} image/webp
    RewriteCond %{SCRIPT_FILENAME}.webp -f
    RewriteRule .(jpe?g|png|gif)$ %{SCRIPT_FILENAME}.webp [T=image/webp]
</IfModule>

<IfModule mod_mime.c>
    AddType image/webp .webp
</IfModule>

<IfModule mod_setenvif.c>
    SetEnvIf Request_URI "\.(jpe?g|png|gif)$" _image_request
</IfModule>

<IfModule mod_headers.c>
    Header append Vary Accept env=_image_request
</IfModule>

メリットとデメリット

前述のHTMLで対応する方法とは異なり、一括で設定できるのがメリット。

設定ミスがあった場合に影響範囲が多いのがデメリット。

注意点

以下の点に注意する。

  • WebP画像はjpg / png画像と同じディレクトリに設置
  • WebP画像は「001.jpg.webp」のようなファイル名にする(001.webpはNG)

 

確認方法

HTML / htaccessファイルのどちらで対応する場合でもMicrosoft EdgeのInternet Explorerモードで動作確認できる。IEモードの設定方法は公式のこちらのページを参照すること。

 - Apache サーバー HTML

  関連記事

PHPにて指定した画像に対して、繰り返し透かし画像処理する方法
PHPにて指定した画像に対して、繰り返し透かし画像処理する方法

画像素材等のサイトで無料版の画像に対して「sample」等の透かし画像処理を行っ ...

JavaScriptにて電子書籍や漫画ビューア用のライブラリ「ToraViewer」の利用方法
JavaScriptにて電子書籍や漫画ビューア用のライブラリ「ToraViewer」の利用方法

電子書籍や漫画ビューア用を設置したい。条件としてはレスポンシブ対応していること。 ...

フォームからアップロードした画像にPHPで任意のテキストを追加する方法
フォームからアップロードした画像にPHPで任意のテキストを追加する方法

以前フォームから送られてきた画像に対してサイトロゴみたいなロゴ画像を追加する記事 ...

lazyload.js等のライブラリを使わずHTMLのみで画像の遅延読み込みを行う方法
lazyload.js等のライブラリを使わずHTMLのみで画像の遅延読み込みを行う方法

画像を遅延読み込みさせるとなるとだいぶ前に書いたlazyload.jsを用いる方 ...

jQueryで画像(<img>タグ内)のsrc情報を取得する場合
jQueryで画像(タグ内)のsrc情報を取得する場合

すぐに出てこなかったのでメモ。 $('#test').attr('src'); ...