{"id":24935,"date":"2021-05-27T12:37:00","date_gmt":"2021-05-27T09:37:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24935"},"modified":"2021-10-18T02:13:21","modified_gmt":"2021-10-17T23:13:21","slug":"telecharger-et-redimensionner-plusieurs-images-dans-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fr\/telecharger-et-redimensionner-plusieurs-images-dans-laravel\/","title":{"rendered":"T\u00e9l\u00e9charger et redimensionner plusieurs images dans Laravel"},"content":{"rendered":"<p>En dehors de ce blog, je dirige une <a href=\"https:\/\/www.youtube.com\/channel\/UCosi8Kv8-EPLt5TBJLlsWJA\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cha\u00eene YouTube<\/a> o\u00f9 je partage les didacticiels vid\u00e9o. R\u00e9cemment, l&rsquo;un des abonn\u00e9s de la cha\u00eene YouTube a demand\u00e9 s&rsquo;il fallait redimensionner plusieurs images dans Laravel. Ils veulent redimensionner plusieurs images en une seule fois. Dans cet article, nous \u00e9tudions comment t\u00e9l\u00e9charger et redimensionner plusieurs images dans Laravel.<\/p>\n<p><a href=\"https:\/\/image.intervention.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Intervention Image<\/a> est une biblioth\u00e8que open source qui nous permet de manipuler des images. Je vais utiliser cette biblioth\u00e8que pour redimensionner les images.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20446-6081f2f1b1c63.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20446-6081f2f1b1c63.png\" alt=\"T\u00e9l\u00e9charger et redimensionner plusieurs images dans Laravel\" ><\/a><\/p>\n<h3>Commencer<\/h3>\n<p>Pour atteindre notre objectif, vous devez installer et configurer la biblioth\u00e8que d&rsquo;images d&rsquo;intervention dans le projet Laravel. Ouvrez le terminal dans le r\u00e9pertoire racine de votre projet et ex\u00e9cutez la commande\u00a0:<\/p>\n<pre><code>composer require intervention\/image<\/code><\/pre>\n<p>Une fois la librairie install\u00e9e, ouvrez le <code>config\/app.php<\/code>fichier et ajoutez des prestataires, fa\u00e7ade dedans. Ajoutez les fournisseurs de services de ce package au <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, nous avons besoin d&rsquo;un r\u00e9pertoire o\u00f9 nous stockons nos fichiers t\u00e9l\u00e9charg\u00e9s. <a href=\"https:\/\/laravel.com\/docs\/master\/filesystem\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laravel Filesystem<\/a> fournit un disque public pour stocker les fichiers. Le disque public contient des fichiers accessibles au public. Vous trouverez les fichiers t\u00e9l\u00e9charg\u00e9s dans le <code>storage\/app\/public<\/code>dossier. Pour acc\u00e9der \u00e0 ces fichiers sur le Web, vous devez cr\u00e9er un lien symbolique de <code>public\/storage<\/code>\u00e0 <code>storage\/app\/public<\/code>.<\/p>\n<p>Cr\u00e9ez un lien symbolique \u00e0 l&rsquo;aide de la commande\u00a0:<\/p>\n<pre><code>php artisan storage:link<\/code><\/pre>\n<p>Cette commande cr\u00e9erait un dossier de stockage sous le r\u00e9pertoire public. C&rsquo;est l\u00e0 que nous stockons nos fichiers.<\/p>\n<h3>T\u00e9l\u00e9charger et redimensionner des images dans Laravel<\/h3>\n<p>Pour t\u00e9l\u00e9charger des fichiers sur un serveur, vous avez besoin d&rsquo;un formulaire. Cr\u00e9ons un formulaire o\u00f9 vous pouvez s\u00e9lectionner plusieurs fichiers \u00e0 t\u00e9l\u00e9charger sur un serveur. Vous trouverez ci-dessous un exemple de code du formulaire qui ira \u00e0 l&rsquo;int\u00e9rieur de votre fichier de vue.<\/p>\n<pre><code>&lt;form action=\"{{ url('ROUTE HERE') }}\" 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\" multiple \/&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 formulaire, j&rsquo;ai pris un nom d&rsquo;entr\u00e9e de fichier comme &lsquo;profile_image[]&rsquo; qui envoie un tableau de fichiers au serveur. Aussi, j&rsquo;ai ajout\u00e9 un attribut &lsquo;multiple&rsquo; qui nous permet de s\u00e9lectionner plusieurs fichiers. Remplacez l&rsquo;espace r\u00e9serv\u00e9 ROUTE_URL par votre valeur r\u00e9elle.<\/p>\n<p>Comme nous devons t\u00e9l\u00e9charger et redimensionner les images, dans le contr\u00f4leur, ajoutez deux fa\u00e7ades comme suit.<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllers;\n\u00a0\nuse IlluminateHttpRequest;\nuse Image; \/\/Intervention Image\nuse IlluminateSupportFacadesStorage; \/\/Laravel Filesystem\n\u00a0\nclass ImageController extends Controller\n{\n\u00a0\n}<\/code><\/pre>\n<p>En ajoutant la fa\u00e7ade, vous pouvez appeler les fonctions de redimensionnement de la biblioth\u00e8que d&rsquo;images d&rsquo;intervention. Dans le code ci-dessous, je vais t\u00e9l\u00e9charger les fichiers \u00e0 deux endroits. L&rsquo;un est l&rsquo;image originale. Le second se trouve sous le r\u00e9pertoire des vignettes. 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\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0foreach($request-&gt;file('profile_image') as $file){\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get filename with extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filenamewithextension = $file-&gt;getClientOriginalName();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get filename without extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get file extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$extension = $file-&gt;getClientOriginalExtension();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/filename to store\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filenametostore = $filename.'_'.uniqid().'.'.$extension;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Storage::put('public\/profile_images\/'. $filenametostore, fopen($file, 'r+'));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Storage::put('public\/profile_images\/thumbnail\/'. $filenametostore, fopen($file, 'r+'));\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/Resize image here\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$thumbnailpath = public_path('storage\/profile_images\/thumbnail\/'.$filenametostore);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img = Image::make($thumbnailpath)-&gt;resize(400, 150, function($constraint) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$constraint-&gt;aspectRatio();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img-&gt;save($thumbnailpath);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return redirect('ROUTE_URL')-&gt;with('success', \"Image uploaded successfully.\");\n\u00a0\u00a0\u00a0\u00a0}\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. Je passe la largeur \u00e0 400 et la hauteur \u00e0 150. Vous pouvez modifier ces valeurs selon vos besoins.<\/p>\n<p>Allez-y et testez-le. Vous obtiendrez la version redimensionn\u00e9e des images t\u00e9l\u00e9charg\u00e9es dans le r\u00e9pertoire &lsquo;storage\/profile_images\/thumbnail&rsquo;.<\/p>\n<p>Si vous recherchez un recadrage difficile, remplacez les lignes ci-dessous<\/p>\n<pre><code>$img = Image::make($thumbnailpath)-&gt;resize(400, 150, function($constraint) {\n\u00a0\u00a0\u00a0\u00a0$constraint-&gt;aspectRatio();\n});\n$img-&gt;save($thumbnailpath);<\/code><\/pre>\n<p>Avec<\/p>\n<pre><code>$img = Image::make($thumbnailpath)-&gt;resize(100, 100)-&gt;save($thumbnailpath);<\/code><\/pre>\n<p>J&rsquo;esp\u00e8re que vous comprenez comment t\u00e9l\u00e9charger et redimensionner plusieurs images dans Laravel. S&rsquo;il vous pla\u00eet partager vos pens\u00e9es et suggestions dans la section commentaires ci-dessous.<\/p>\n<h4>Articles Li\u00e9s<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-telecharger-un-fichier-sur-s3-a-l-aide-du-systeme-de-fichiers-laravel\/\" title=\"Comment t\u00e9l\u00e9charger un fichier sur S3 \u00e0 l&#039;aide du syst\u00e8me de fichiers Laravel\">Comment t\u00e9l\u00e9charger un fichier sur S3 \u00e0 l&rsquo;aide du syst\u00e8me de fichiers Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-faire-une-sauvegarde-de-l-application-laravel\/\" title=\"Comment faire une sauvegarde de l&#039;application Laravel\">Comment faire une sauvegarde de l&rsquo;application Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-integrer-la-newsletter-mailchimp-dans-l-application-laravel\/\" title=\"Comment int\u00e9grer la newsletter MailChimp dans l&#039;application Laravel\">Comment int\u00e9grer la newsletter MailChimp dans l&rsquo;application 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>Vous cherchez comment t\u00e9l\u00e9charger et redimensionner plusieurs images dans Laravel ? Dans cet article, nous vous montrons comment effectuer cette t\u00e2che \u00e0 l&rsquo;aide d&rsquo;Intervention Image<\/p>\n","protected":false},"author":1,"featured_media":21676,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[497],"tags":[844],"class_list":["post-24935","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\/24935","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=24935"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/24935\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media\/21676"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media?parent=24935"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/categories?post=24935"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/tags?post=24935"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}