フォーマット変換
このページでは、クライアントの Accept ヘッダーや HTTP メソッドに応じて Manael がどのように画像を変換するかを説明します。
JPEG を WebP に変換する
Manael はクライアントが Accept リクエストヘッダーで WebP のサポートを示している場合、JPEG および PNG 画像を自動的に WebP に変換します。プロキシを起動する以外に設定は不要です。
JPEG 画像を WebP として受け取るには、Accept ヘッダーに image/webp を含めてリクエストします。
curl -sI -X GET -H "Accept: image/webp" http://localhost:8080/image.jpg
変換が成功すると、レスポンスに Content-Type: image/webp が含まれます。
HTTP/1.1 200 OK
Content-Type: image/webp
Vary: Accept
...
クライアントが Accept ヘッダーに image/webp を含めない場合、元の画像がそのまま返されます。
画像を AVIF に変換する
Manael は JPEG 画像を AVIF に変換することもできます。AVIF 変換はデフォルトで無効になっており、MANAEL_ENABLE_AVIF 環境変数で有効にする必要があります。
MANAEL_ENABLE_AVIF=true manael -http=:8080 -upstream_url=http://localhost:9000
AVIF が有効で、クライアントが Accept ヘッダーに image/avif を含めている場合、Manael は対象画像を AVIF に変換します。
curl -sI -X GET -H "Accept: image/avif" http://localhost:8080/image.jpg
変換が成功すると、Content-Type: image/avif が返されます。
HTTP/1.1 200 OK
Content-Type: image/avif
Vary: Accept
...
PNG ソース画像への AVIF 変換は、互換性とパフォーマンスを優先するために意図的に無効化されています。PNG 画像はクライアントが対応している場合に引き続き WebP に変換されます。
リクエストメソッドごとの挙動
Manael は GET リクエストに対してのみ画像変換を行います。HEAD リクエストやその他の HTTP メソッドは変換されず、アップストリームのレスポンスがそのまま返されます。
コマンドラインから変換結果のヘッダーを確認する場合は curl -sI -X GET を使用してください。
Content-Disposition ヘッダーの更新
Manael が画像を別フォーマットに変換した際、レスポンスの Content-Disposition ヘッダーに含まれるファイル名の拡張子を新しいフォーマットに合わせて自動的に更新します。たとえば、アップストリームのレスポンスに次のヘッダーが含まれる場合:
Content-Disposition: attachment; filename="photo.jpg"
WebP に変換されると、Manael はヘッダーを次のように更新します:
Content-Disposition: attachment; filename="photo.webp"
AVIF に変換した場合も同様に拡張子が .avif に更新されます。