2012-01-09 12 views
0

http://www.playframework.org/community/snippets/4圧縮または

を参照してくださいレンダリングする前に画像のサイズを変更するには、それが画面上にレンダリングする前に、ブロブの画像をリサイズ/圧縮することは可能ですか?

public static void getPicture(long id) { 
    Picture picture = Picture.findById(id); 
    response.setContentTypeIfNotSet(picture.image.type()); 
    renderBinary(picture.image.get()); 
} 

答えて

2

イメージクラスは、play.libsパッケージで使用できます。このパッケージには、resizeという静的メソッドがあります。

署名はあなたが明らかに、変換を実行するために、ファイルに画像を保存するために追加の手順を実行する必要があるが、これはあまりにも多くの場合、あなたが取ることができるかもしれ

resize(java.io.File originalImage, java.io.File to, int w, int h) 

ですコードのコピーを作成し、代わりにBlobを使用するようにしてください。

また、Blob型で動作する他のサードパーティライブラリがある場合は、これを簡単に統合できます。

+0

注意を助け

・ホープ(http://stackoverflow.com/questions/9453367/is-javax-imageio-imageio-broken-it-imports-を参照してくださいいくつかの画像は回転しているように見えます)。 – Samuel

0

JPEGなどの圧縮画像を扱う場合、画像を圧縮するディスク/帯域幅はあまり節約できません。ほとんどの場合、おそらくちょうど圧縮のコストに見合ったバイト数が少なくなるでしょう。

JMagick(これはImageMagickのインターフェイスです)の場合に適しています。 JMagickを使用して画像のサイズを変更する方法については、small tutorialがあります。この方法を使用しているとき、あなたは回転情報を失うこと

関連する問題