2011-11-18 10 views
3

WebP画像の驚異的なサイズ縮小(無損失+アルファ画像の場合、「pngcrushed」PNGよりも約28%小さい)が見られるので、WebPをサポートするブラウザにWebP画像を提供したいと考えています。WebPをサポートしているブラウザを検出する方法とWebPの画像を提供する方法?

クライアントのブラウザがWebPをサポートしている場合、Java Webアプリケーションサーバーからどのように検出できますか?

あり、JavaScriptからそれを行う方法についてここで問題となっています:

Detecting WebP support

しかし、私は、Javaからそれを行う方法を知っているように思います。 Javaからの操作がクライアント側でJavaScriptを呼び出すことを意味する場合は、その方法を知りたいと思います。

答えて

3

Javaのみを使用してWebブラウザの機能を特定することはできません。 Java/JSPはWebブラウザではなくWebサーバーで実行されます。あなたは本当にこのためにJavaScriptを使用する必要があります。関連する質問ですでに見つかったコードを使用することができます。ブラウザがWebPをサポートしていることを示すクッキーがまだ存在しない場合はJSロードをチェックし、それに応じてフィーチャ検出を行い、最終的に長いライブクッキーをdocument.cookieに設定し、ページをリロードするlocation.reload()

サーバー側では、サーブレットでHttpServletRequest#getCookies()、またはJSPで${cookie}と設定して、適切なイメージURLを設定する前に、Cookieおよび/またはその値が存在するかどうかを確認するだけです。

クッキーを設定する以外に、JSにリクエストを送信するリクエストを送信することができますが、これはリクエストまたはセッションごとに行う必要があることを意味します。

+0

+1:それは私が恐れていたことです...それはそう簡単ではないようです。 –

6

クライアント上でWebPサポートを検出する簡単な方法があります。その後、クライアント上でCookieを設定し、サーバー上の値を読み取ることができます。

function testWepP(callback) { 
    var webP = new Image();  
    webP.src = 'data:image/webp;base64,UklGRi4AAABXRUJQVlA4TCEAAAAvAUAAEB8wAiMw' + 
'AgSSNtse/cXjxyCCmrYNWPwmHRH9jwMA'; 
    webP.onload = webP.onerror = function() { 
     callback(webP.height === 2);  
    }; 
}; 

testWebP(function(supported) { 
    console.log((supported) ? "webP 0.2.0 supported!" : "webP not supported."); 
}); 

詳細情報here

+0

リンク先のページに更新されたsrcがあるようです。 – Greg

+0

ありがとうございましたGreg - コードを更新しました –

関連する問題