{"id":24775,"date":"2021-05-25T11:13:00","date_gmt":"2021-05-25T08:13:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24775"},"modified":"2021-10-18T02:13:48","modified_gmt":"2021-10-17T23:13:48","slug":"creer-une-vignette-dans-laravel-a-l-aide-de-la-bibliotheque-d-images-d-intervention","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fr\/creer-une-vignette-dans-laravel-a-l-aide-de-la-bibliotheque-d-images-d-intervention\/","title":{"rendered":"Cr\u00e9er une vignette dans Laravel \u00e0 l&rsquo;aide de la biblioth\u00e8que d&rsquo;images d&rsquo;intervention"},"content":{"rendered":"<p>Sur le site Web, nous nous occupons toujours des images. En fonction des besoins, nous utilisons diff\u00e9rentes versions d&rsquo;images. C&rsquo;est une bonne pratique pour les d\u00e9veloppeurs de cr\u00e9er diff\u00e9rentes versions, c&rsquo;est-\u00e0-dire des vignettes de l&rsquo;image unique. Ces vignettes peuvent \u00eatre utilis\u00e9es tout en affichant diff\u00e9rentes tailles d&rsquo;images en fonction de la taille du conteneur. L&rsquo;affichage d&rsquo;une image adapt\u00e9e \u00e0 la taille du conteneur \u00e9conomisera de la bande passante et am\u00e9liorera le temps de chargement de la page. Afficher une image de grande taille dans un petit conteneur est une mauvaise pratique et compromet le temps de chargement de la page. Par cons\u00e9quent, il est recommand\u00e9 de cr\u00e9er plusieurs vignettes d&rsquo;une image et d&rsquo;utiliser la version appropri\u00e9e si n\u00e9cessaire.<\/p>\n<p>Dans cet article, nous \u00e9tudions comment cr\u00e9er une vignette dans Laravel \u00e0 l&rsquo;aide de la biblioth\u00e8que d&rsquo;images d&rsquo;intervention. <a href=\"http:\/\/image.intervention.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Intervention Image<\/a> est gratuite et l&rsquo;une des biblioth\u00e8ques populaires pour la manipulation d&rsquo;images. En arri\u00e8re-plan, cette biblioth\u00e8que utilise la biblioth\u00e8que GD et Imagick pour la manipulation d&rsquo;images.<\/p>\n<p>Pour ce tutoriel, je vais cr\u00e9er 3 vignettes \u2013 petite, moyenne, grande avec les tailles 150 93, 300*185, 550 340 respectivement. Modifiez ces tailles selon vos besoins.<\/p>\n<h3>Commencer<\/h3>\n<p>Pour commencer, vous devez d&rsquo;abord installer la biblioth\u00e8que d&rsquo;images d&rsquo;intervention dans Laravel. Ouvrez le terminal dans le r\u00e9pertoire racine de votre projet et ex\u00e9cutez la commande ci-dessous\u00a0:<\/p>\n<pre><code>composer require intervention\/image<\/code><\/pre>\n<p>Apr\u00e8s avoir install\u00e9 la biblioth\u00e8que, ouvrez le <code>config\/app.php<\/code>fichier et ajoutez-y les lignes suivantes.<\/p>\n<p>Ajoutez les fournisseurs de services pour ce package dans le <code>$providers<\/code>tableau.<\/p>\n<pre><code>InterventionImageImageServiceProvider::class<\/code><\/pre>\n<p>Ajoutez la fa\u00e7ade au <code>$aliases<\/code>tableau.<\/p>\n<pre><code>'Image' =&gt; InterventionImageFacadesImage::class<\/code><\/pre>\n<p>Ensuite, pour stocker les images, nous devons cr\u00e9er un r\u00e9pertoire. Rendez-vous sur le terminal et ex\u00e9cutez la commande comme suit\u00a0:<\/p>\n<pre><code>php artisan storage:link<\/code><\/pre>\n<p>Cette commande cr\u00e9e un r\u00e9pertoire de stockage (lien symbolique) sous le dossier public. Dans ce dossier, je vais t\u00e9l\u00e9charger l&rsquo;image originale et ses vignettes.<\/p>\n<h3>Cr\u00e9er une vignette dans Laravel<\/h3>\n<p>Nous avons tous r\u00e9gl\u00e9 avec la configuration de base et pouvons maintenant \u00e9crire le code r\u00e9el. Cr\u00e9ons un formulaire dans votre fichier de vue.<\/p>\n<pre><code>&lt;form action=\"{{ url('PASS_ACTION_URL') }}\" method=\"post\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label for=\"exampleInputFile\"&gt;File input&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"file\" name=\"profile_image\" id=\"exampleInputFile\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0{{ csrf_field() }}\n\u00a0\u00a0\u00a0\u00a0&lt;button type=\"submit\" class=\"btn btn-default\"&gt;Submit&lt;\/button&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>Dans le contr\u00f4leur, vous devez ajouter la fa\u00e7ade de la biblioth\u00e8que &lsquo;Image&rsquo; que nous avons ajout\u00e9e dans le <code>config\/app.php<\/code>fichier.<\/p>\n<pre><code>&lt;?php\n\u00a0\u00a0\nnamespace AppHttpControllers;\n\u00a0\u00a0\nuse IlluminateHttpRequest;\nuse Image;\n\u00a0\u00a0\nclass ImageController extends Controller\n{\n\u00a0\u00a0\n}<\/code><\/pre>\n<p>En ajoutant la fa\u00e7ade, nous pouvons appeler des fonctions de la biblioth\u00e8que d&rsquo;images d&rsquo;intervention. Dans le code ci-dessous, je vais t\u00e9l\u00e9charger l&rsquo;image \u00e0 deux endroits. L&rsquo;image originale va directement dans le <code>storage\/profile_images<\/code>dossier. Les vignettes seraient stock\u00e9es dans le <code>storage\/profile_images\/thumbnail<\/code>r\u00e9pertoire. Nous t\u00e9l\u00e9chargeons d&rsquo;abord l&rsquo;image originale dans le dossier des vignettes, puis la redimensionnons.<\/p>\n<pre><code>public function store(Request $request)\n{\n\u00a0\u00a0\u00a0\u00a0if($request-&gt;hasFile('profile_image')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get filename with extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filenamewithextension = $request-&gt;file('profile_image')-&gt;getClientOriginalName();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get filename without extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get file extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$extension = $request-&gt;file('profile_image')-&gt;getClientOriginalExtension();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/filename to store\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filenametostore = $filename.'_'.time().'.'.$extension;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/small thumbnail name\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$smallthumbnail = $filename.'_small_'.time().'.'.$extension;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/medium thumbnail name\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$mediumthumbnail = $filename.'_medium_'.time().'.'.$extension;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/large thumbnail name\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$largethumbnail = $filename.'_large_'.time().'.'.$extension;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/Upload File\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$request-&gt;file('profile_image')-&gt;storeAs('public\/profile_images', $filenametostore);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$request-&gt;file('profile_image')-&gt;storeAs('public\/profile_images\/thumbnail', $smallthumbnail);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$request-&gt;file('profile_image')-&gt;storeAs('public\/profile_images\/thumbnail', $mediumthumbnail);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$request-&gt;file('profile_image')-&gt;storeAs('public\/profile_images\/thumbnail', $largethumbnail);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/create small thumbnail\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$smallthumbnailpath = public_path('storage\/profile_images\/thumbnail\/'.$smallthumbnail);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;createThumbnail($smallthumbnailpath, 150, 93);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/create medium thumbnail\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$mediumthumbnailpath = public_path('storage\/profile_images\/thumbnail\/'.$mediumthumbnail);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;createThumbnail($mediumthumbnailpath, 300, 185);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/create large thumbnail\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$largethumbnailpath = public_path('storage\/profile_images\/thumbnail\/'.$largethumbnail);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;createThumbnail($largethumbnailpath, 550, 340);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return redirect('image')-&gt;with('success', \"Image uploaded successfully.\");\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Dans le code ci-dessus, je stocke l&rsquo;image avec 3 formats petit, moyen et grand. Apr\u00e8s les avoir stock\u00e9es, nous appelons la m\u00e9thode <code>createThumbnail<\/code>et passons la largeur et la hauteur requises \u00e0 la m\u00e9thode. D\u00e9finissons cette fonction ci-dessous. Cette fonction doit aller dans le m\u00eame contr\u00f4leur.<\/p>\n<pre><code>\/**\n\u00a0* Create a thumbnail of specified size\n\u00a0*\n\u00a0* @param string $path path of thumbnail\n\u00a0* @param int $width\n\u00a0* @param int $height\n\u00a0*\/\npublic function createThumbnail($path, $width, $height)\n{\n\u00a0\u00a0\u00a0\u00a0$img = Image::make($path)-&gt;resize($width, $height, function ($constraint) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$constraint-&gt;aspectRatio();\n\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0$img-&gt;save($path);\n}<\/code><\/pre>\n<p>Ici, nous redimensionnons l&rsquo;image proportionnellement. Ce faisant, nous gardons le rapport hauteur\/largeur et l&rsquo;image ne sera pas coup\u00e9e.<\/p>\n<p>Si vous recherchez un recadrage difficile, remplacez les lignes ci-dessous<\/p>\n<pre><code>$img = Image::make($path)-&gt;resize($width, $height, function ($constraint) {\n\u00a0\u00a0\u00a0\u00a0$constraint-&gt;aspectRatio();\n});\n$img-&gt;save($path);<\/code><\/pre>\n<p>Avec<\/p>\n<pre><code>$img = Image::make($path)-&gt;resize($width, $height)-&gt;save($path);<\/code><\/pre>\n<p>J&rsquo;esp\u00e8re que vous comprendrez comment cr\u00e9er une vignette dans Laravel \u00e0 l&rsquo;aide de la biblioth\u00e8que d&rsquo;images d&rsquo;intervention. J&rsquo;aimerais entendre vos pens\u00e9es dans la section des commentaires ci-dessous.<\/p>\n<h4>Articles Li\u00e9s<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/redimensionner-l-image-dans-laravel-a-l-aide-de-la-bibliotheque-d-images-d-intervention\/\" title=\"Redimensionner l&#039;image dans Laravel \u00e0 l&#039;aide de la biblioth\u00e8que d&#039;images d&#039;intervention\">Redimensionner l&rsquo;image dans Laravel \u00e0 l&rsquo;aide de la biblioth\u00e8que d&rsquo;images d&rsquo;intervention<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-telecharger-et-compresser-des-images-dans-laravel\/\" title=\"Un guide pour t\u00e9l\u00e9charger et compresser des images dans Laravel\">Un guide pour t\u00e9l\u00e9charger et compresser des images dans Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/telecharger-et-redimensionner-plusieurs-images-dans-laravel\/\" title=\"T\u00e9l\u00e9charger et redimensionner plusieurs images dans Laravel\">T\u00e9l\u00e9charger et redimensionner plusieurs images dans Laravel<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voulez-vous cr\u00e9er une vignette dans Laravel lors du t\u00e9l\u00e9chargement d&rsquo;une image\u00a0? Dans cet article, nous \u00e9tudions comment cr\u00e9er plusieurs vignettes \u00e0 l&rsquo;aide d&rsquo;Intervention Image<\/p>\n","protected":false},"author":1,"featured_media":21673,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[497],"tags":[844],"class_list":["post-24775","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel2-4","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/24775","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/comments?post=24775"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/24775\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media\/21673"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media?parent=24775"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/categories?post=24775"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/tags?post=24775"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}