Twigの関数で画像の最適化にAsseticをどうやって使うか? ==================================================== 沢山のフィルタの中でAsseticはオンザフライでの画像の最適化に使えるフィルタを4つ持っています。 このフィルタを使うことでフォトレタッチソフトを使わなくても簡単に画像のサイズを最適化できます。 最適化された結果はキャッシュ、もしくは指定したディレクトリに保存することが出来るので プロダクション環境でのパフォーマンスに影響しません。 Jpegoptimを使う --------------- `Jpegoptim`_ は JPEG ファイルの最適化の為のツールです. Asseticでこのフィルタを使うには 下記のようなAsseticの設定を追加します。 .. configuration-block:: .. code-block:: yaml # app/config/config.yml assetic: filters: jpegoptim: bin: path/to/jpegoptim .. code-block:: xml .. code-block:: php // app/config/config.php $container->loadFromExtension('assetic', array( 'filters' => array( 'jpegoptim' => array( 'bin' => 'path/to/jpegoptim', ), ), )); .. note:: jpegoptimを使うには既にあなたの環境にjpegoptimがインストールされている 必要があります。 設定の ``bin`` にあなたの環境でjpegoptimがインストールされている 場所を指定してください。 これでテンプレートからjpegoptimを使うことが出来ます。 .. configuration-block:: .. code-block:: html+jinja {% image '@AcmeFooBundle/Resources/public/images/example.jpg' filter='jpegoptim' output='/images/example.jpg' %} Example {% endimage %} .. code-block:: html+php images( array('@AcmeFooBundle/Resources/public/images/example.jpg'), array('jpegoptim')) as $url): ?> Example 全てのEXIFデータを削除する ~~~~~~~~~~~~~~~~~~~~~~~~~~ 初期状態ではこのフィルタはいくつかのメタ情報だけを削除するようにしています。 それ以外のEXIFデータやコメントは削除されません。 ``strip_all`` optionを つけることで全てのEXIFデータを削除することが出来ます。 .. configuration-block:: .. code-block:: yaml # app/config/config.yml assetic: filters: jpegoptim: bin: path/to/jpegoptim strip_all: true .. code-block:: xml .. code-block:: php // app/config/config.php $container->loadFromExtension('assetic', array( 'filters' => array( 'jpegoptim' => array( 'bin' => 'path/to/jpegoptim', 'strip_all' => 'true', ), ), )); 最適化クオリティを下げる ~~~~~~~~~~~~~~~~~~~~~~~~ 初期設定ではJPEGの最適化レベルは変更されません。現在の画像の最適化レベルを 下げる事でファイルサイズを更に小さくすることが出来ます。しかしこれは 画像の見た目とのトレードオフとなってしまいます。 .. configuration-block:: .. code-block:: yaml # app/config/config.yml assetic: filters: jpegoptim: bin: path/to/jpegoptim max: 70 .. code-block:: xml .. code-block:: php // app/config/config.php $container->loadFromExtension('assetic', array( 'filters' => array( 'jpegoptim' => array( 'bin' => 'path/to/jpegoptim', 'max' => '70', ), ), )); Twig Functionのより短い書き方 ----------------------------- もしTwigを使っているのであれば下記の設定をすることでより短いフィルタ名 を使うことが出来ます。 .. configuration-block:: .. code-block:: yaml # app/config/config.yml assetic: filters: jpegoptim: bin: path/to/jpegoptim twig: functions: jpegoptim: ~ .. code-block:: xml .. code-block:: php // app/config/config.php $container->loadFromExtension('assetic', array( 'filters' => array( 'jpegoptim' => array( 'bin' => 'path/to/jpegoptim', ), ), 'twig' => array( 'functions' => array('jpegoptim'), ), ), )); この設定を使うことで下記のような書き方でAsseticを使えるようになります。 .. code-block:: html+jinja Example 下記の設定をすることでキャッシュの生成ディレクトリを指定することもできます。 .. configuration-block:: .. code-block:: yaml # app/config/config.yml assetic: filters: jpegoptim: bin: path/to/jpegoptim twig: functions: jpegoptim: { output: images/*.jpg } .. code-block:: xml .. code-block:: php // app/config/config.php $container->loadFromExtension('assetic', array( 'filters' => array( 'jpegoptim' => array( 'bin' => 'path/to/jpegoptim', ), ), 'twig' => array( 'functions' => array( 'jpegoptim' => array( output => 'images/*.jpg' ), ), ), )); .. _`Jpegoptim`: http://www.kokkonen.net/tjko/projects.html .. 2011/07/31 chobie 9367dc0ae03119f8c1bba228d9f2682ffdea63a5