<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Gregwar &#187; Web</title>
	<atom:link href="http://www.gregwar.com/category/web/feed" rel="self" type="application/rss+xml" />
	<link>http://www.gregwar.com</link>
	<description>Web &#38; technologies</description>
	<lastBuildDate>Wed, 28 Dec 2011 19:24:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Manipulation d&#8217;images sous Symfony2</title>
		<link>http://www.gregwar.com/php/manipulation-dimages-sous-symfony2-208</link>
		<comments>http://www.gregwar.com/php/manipulation-dimages-sous-symfony2-208#comments</comments>
		<pubDate>Mon, 08 Aug 2011 21:11:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[gd]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[manipulation]]></category>
		<category><![CDATA[symfony2]]></category>

		<guid isPermaLink="false">http://www.gregwar.com/?p=208</guid>
		<description><![CDATA[Dans un article précédent, je montrais une bibliothèque permettant de manipuler des images d&#8217;une manière un peu particulière, mais à mon sens intéréssant. Ici, nous allons parler de la façon dont cette bibliothèque peut s&#8217;intégrer à Symfony2. Je travaille actuellement sous Symfony2 et j&#8217;ai été amené à manipuler des images dans une application que je [...]]]></description>
			<content:encoded><![CDATA[<p>Dans un <a href="http://www.gregwar.com/programmation/manipulez-vos-images-avec-php-198">article précédent</a>, je montrais une <a href="https://github.com/Gregwar/Image">bibliothèque</a> permettant de manipuler des images d&#8217;une manière un peu particulière, mais à mon sens intéréssant. Ici, nous allons parler de la façon dont cette bibliothèque peut s&#8217;intégrer à Symfony2.</p>
<p>Je travaille actuellement sous Symfony2 et j&#8217;ai été amené à manipuler des images dans une application que je développe. Ayant déjà sous la main ma propre classe de gestion d&#8217;images, j&#8217;ai décidé de l&#8217;intégrer au framework à l&#8217;aide d&#8217;un Bundle. Comme vous pourrez le remarquer si vous jetez un oeil au <a href="https://github.com/Gregwar/ImageBundle">projet git correspondant</a>, l&#8217;intégration de la classe dans un bundle Symfony2 ne nécéssite pas beaucoup de code supplémentaire.</p>
<h2>Installation</h2>
<p>Commencez par placer le dépôt git dans vos dépendances et clonez-le. Ajoutez alors l&#8217;espace de nom Gregwar à votre <em>app/autoloader.php</em> :</p>
<pre class="brush: php">&#039;Gregwar&#039; =&gt; __DIR__.&#039;/../vendor/gregwar-image/bundle/&#039;,</pre>
<p>Une fois fait, ajouter le bundle à votre <em>app/AppKernel.php </em>:</p>
<pre class="brush: php">...
public function registerBundles()
{
$bundles = array(
...
new Gregwar\ImageBundle\GregwarImageBundle(),
...
);
...</pre>
<p>Il ne vous reste plus qu&#8217;à ajouter à votre fichier de configuration (ex: <em>app/config/config.yml</em>) :</p>
<pre class="brush: bash">gregwar_image: ~</pre>
<p>Puis, créez le dossier web/cache et donnez les permissions à apache d&#8217;écrire dedans</p>
<pre class="brush: bash">mkdir web/cache
chmod 777 web/cache</pre>
<p>Si vous voulez utiliser un autre nom, précisez le dans la configuration:</p>
<pre class="brush: bash">gregwar_image:
   cache_dir: mes_fichies_caches</pre>
<h2>Services fournis</h2>
<p>Ce Bundle Symfony2 vous fournit principalement deux choses:</p>
<ol>
<li>Un service <em>image.handling</em> permettant d&#8217;utiliser la classe <em>Gregwar\Image</em> avec l&#8217;injection de dépendance;</li>
<li>Un helper twig, qui vous permet d&#8217;utiliser les fonctionnalités de <em>Gregwar\Image </em>directement dans vos templates</li>
</ol>
<p>Je ne m&#8217;attarderais pas sur le premier point, vous l&#8217;aurez vite compris, vous pouvez écrire des lignes de la forme:</p>
<pre class="brush: php">$this-&gt;get(&#039;image.handling&#039;)-&gt;open(&#039;linux.jpg&#039;)
    -&gt;grayscale()
    -&gt;rotate(12)
    -&gt;save(&#039;out.jpg&#039;)</pre>
<p>Dans vos contrôleurs ou dans n&#8217;importe quel classe ayant accès aux services, ce qui peut s&#8217;avérer pratique !</p>
<p>La partie intéréssante repose sur l&#8217;helper Twig, qui peut être très utile en tirant profit du dossier de cache. Le bundle enregistre la fonction twig<em> image()</em> qui fournit la même API qu&#8217;avec la classe <em>Gregwar\Image</em>. Un exemple:</p>
<pre class="brush: html">&lt;!-- template.html.twig --&gt;
&lt;img src=&quot;{{ image(&#039;linux.png&#039;).resize(&#039;30%&#039;).rotate(-12).jpeg }}&quot; alt=&quot;&quot; /&gt;</pre>
<p>Le résultat sera alors l&#8217;adresse du fichier de cache hashé. Petit bonus: cet helper fait lui-même appel à l&#8217;helper <em>asset()</em> pour le chemin du fichier de cache.</p>
<p>Vous pouvez également profiter de l&#8217;API de la classe image:</p>
<pre class="brush: html">linux.png a une largeur de {{ image(&#039;linux.png&#039;).width }} px</pre>
<p><a href="https://github.com/Gregwar/ImageBundle">Dépôt Gregwar/ImageBundle sur Github</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gregwar.com/php/manipulation-dimages-sous-symfony2-208/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

