{"id":25586,"date":"2021-06-09T15:38:00","date_gmt":"2021-06-09T12:38:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25586"},"modified":"2021-10-18T02:07:52","modified_gmt":"2021-10-17T23:07:52","slug":"telecharger-et-compresser-plusieurs-images-en-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fr\/telecharger-et-compresser-plusieurs-images-en-php\/","title":{"rendered":"T\u00e9l\u00e9charger et compresser plusieurs images en PHP"},"content":{"rendered":"<p>R\u00e9cemment, l&rsquo;un de nos lecteurs a demand\u00e9 comment t\u00e9l\u00e9charger et compresser plusieurs images en PHP. Il existe certains sc\u00e9narios o\u00f9 nous devons permettre aux utilisateurs de t\u00e9l\u00e9charger plusieurs images. C&rsquo;est toujours une bonne pratique d&rsquo;optimiser les images au moment du t\u00e9l\u00e9chargement. Dans cet article, nous \u00e9tudions le t\u00e9l\u00e9chargement de plusieurs images et comment compresser les images pendant le processus de t\u00e9l\u00e9chargement.<\/p>\n<h3>Pourquoi devons-nous r\u00e9duire la taille du fichier image\u00a0?<\/h3>\n<p>Sans aucun doute, les images jouent un r\u00f4le important dans votre site Web. Des images accrocheuses attirent l&rsquo;attention des lecteurs et ils passeraient plus de temps sur le site Web. Mais en m\u00eame temps, les images de grande taille ralentissent votre site Web. Comme il faut plus de bande passante, votre site Web met plus de temps \u00e0 charger les pages Web. Les propri\u00e9taires de sites doivent faire attention \u00e0 r\u00e9duire la taille du fichier image et utiliser le meilleur outil de compression d&rsquo;image pour cela.<\/p>\n<p>Je vais vous montrer 2 fa\u00e7ons de compresser des images \u2013 TinyPNG et le package <a href=\"https:\/\/github.com\/artisansweb\/image-optimizer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">artisansweb\/image-optimizer<\/a>.<\/p>\n<p><a href=\"https:\/\/tinypng.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">TinyPNG<\/a> est l&rsquo;un des services de compression d&rsquo;images les plus populaires sur le Web. Ce service permet de compresser 500 images par mois gratuitement via leurs API. Pour plus de 500 images, vous devez les payer.<\/p>\n<p>Si vous devez optimiser plus de 500 images par mois et que vous ne voulez pas payer, alors utilisez le package &lsquo;artisansweb\/image-optimizer&rsquo;. Ce package utilise le service <a href=\"https:\/\/resmush.it\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">reSmush.it<\/a> pour l&rsquo;optimisation des images.<\/p>\n<p>Je recommanderais d&rsquo;essayer les deux solutions, de comparer la sortie et de choisir celle qui vous convient.<\/p>\n<p>Cela dit, voyons comment compresser les images apr\u00e8s les avoir t\u00e9l\u00e9charg\u00e9es.<\/p>\n<h3>Premiers pas avec TinyPNG<\/h3>\n<p>Pour commencer, vous devez obtenir une cl\u00e9 API de TinyPNG. <a href=\"https:\/\/tinypng.com\/developers\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Cliquez ici<\/a> pour obtenir votre cl\u00e9 API. Il vous suffit d&rsquo;entrer votre nom et votre adresse e-mail et vous recevrez l&rsquo;e-mail de votre cl\u00e9.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20292-6081d911e6af9.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-20292-6081d911e6af9.png\" alt=\"T\u00e9l\u00e9charger et compresser plusieurs images en PHP\" ><\/a><\/p>\n<p>Une fois que vous obtenez votre cl\u00e9 de d\u00e9veloppeur, installez une biblioth\u00e8que PHP fournie par TinyPNG. Vous devez avoir <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> install\u00e9 sur le syst\u00e8me pour installer la biblioth\u00e8que. Ouvrez le terminal dans le r\u00e9pertoire racine de votre projet et ex\u00e9cutez la commande\u00a0:<\/p>\n<pre><code>composer require tinify\/tinify<\/code><\/pre>\n<h3>Comment compresser des images avec TinyPNG<\/h3>\n<p>Comme mentionn\u00e9 dans le titre de cet article, nous allons voir comment t\u00e9l\u00e9charger et compresser plusieurs images. Pour cela, nous devons cr\u00e9er un formulaire HTML avec une entr\u00e9e de fichier pour parcourir plusieurs images. Cr\u00e9ez <code>index.php<\/code>et placez le code ci-dessous dedans.<\/p>\n<p><strong>index.php<\/strong><\/p>\n<pre><code>&lt;form method=\"post\" enctype=\"multipart\/form-data\" action=\"process_images.php\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label&gt;Upload Images&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"file\" name=\"images[]\" accept=\"image\/*\" multiple&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;button type=\"submit\" name=\"submit\"&gt;Submit&lt;\/button&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>Au fichier d&rsquo;entr\u00e9e, j&rsquo;ai donn\u00e9 un nom sous forme d&rsquo;images[]. En effet, c\u00f4t\u00e9 serveur, nous avons besoin d&rsquo;un tableau de fichiers car l&rsquo;utilisateur va parcourir plusieurs images.<\/p>\n<p>Une fois que nous avons parcouru les images et cliqu\u00e9 sur le bouton Soumettre, les donn\u00e9es du formulaire seront envoy\u00e9es au fichier <code>process_images.php<\/code>. C&rsquo;est le fichier dans lequel nous devons \u00e9crire un code pour t\u00e9l\u00e9charger et compresser des images.<\/p>\n<p><strong>process_images.php<\/strong><\/p>\n<pre><code>&lt;?php\n\/\/ Increase PHP execution time\nset_time_limit(0);\n\u00a0\nrequire_once(\"vendor\/autoload.php\");\nTinifysetKey(\"YOUR_API_KEY\");\n\u00a0\nif (isset($_POST['submit'])) {\n\u00a0\u00a0\u00a0\u00a0$supported_images = array('image\/gif', 'image\/jpg', 'image\/jpeg', 'image\/png');\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if (!file_exists(getcwd(). '\/uploads')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mkdir(getcwd(). '\/uploads', 0777);\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0foreach($_FILES['images']['name'] as $key=&gt;$val) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$file_name = $_FILES['images']['name'][$key];\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ get file extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));\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$filenamewithoutextension = pathinfo($file_name, PATHINFO_FILENAME);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (in_array($_FILES['images']['type'][$key], $supported_images)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filename_to_store = $filenamewithoutextension.'_'.time().'.' .$ext;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0move_uploaded_file($_FILES['images']['tmp_name'][$key], getcwd().'\/uploads\/'.$filename_to_store);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ optimize image using TinyPNG\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$source = TinifyfromFile(getcwd().'\/uploads\/'.$filename_to_store);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$source-&gt;toFile(getcwd().'\/uploads\/'.$filename_to_store);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0exit;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0echo \"Files uploaded successfully.\";\n}<\/code><\/pre>\n<p>Assurez-vous de remplacer l&rsquo;espace r\u00e9serv\u00e9 par votre cl\u00e9 API r\u00e9elle. Dans le code ci-dessus, nous g\u00e9n\u00e9rons un nom de fichier unique en y ajoutant une heure. Une fois qu&rsquo;une image est t\u00e9l\u00e9charg\u00e9e sur le serveur, nous l&rsquo;envoyons \u00e0 l&rsquo;API TinyPNG pour optimisation. En retour, nous obtenons la version compress\u00e9e de l&rsquo;image que nous stockons au m\u00eame endroit et avec le m\u00eame nom de fichier.<\/p>\n<h3>Compresser les images \u00e0 l&rsquo;aide du package artisansweb\/image-optimizer<\/h3>\n<p>J&rsquo;ai d\u00e9velopp\u00e9 le package <a href=\"https:\/\/github.com\/artisansweb\/image-optimizer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Image Optimizer<\/a>. Ce package utilise le service <a href=\"https:\/\/resmush.it\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">reSmush.it<\/a> sous le capot pour optimiser les images. Si vous recherchez un service gratuit, essayez ce package. Le reSmush.it a optimis\u00e9 des milliards d&rsquo;images jusqu&rsquo;\u00e0 pr\u00e9sent. Ce forfait ne n\u00e9cessite pas de fournir de cl\u00e9 ou d&rsquo;enregistrement. Il suffit de le brancher et le tour est jou\u00e9.<\/p>\n<p>Pour commencer avec le package Image Optimizer, installez-le \u00e0 l&rsquo;aide de la commande\u00a0:<\/p>\n<pre><code>composer require artisansweb\/image-optimizer<\/code><\/pre>\n<p>Ensuite, le code dans le <code>process_image.php<\/code>sera modifi\u00e9 comme suit.<\/p>\n<pre><code>&lt;?php\n\/\/ Increase PHP execution time\nset_time_limit(0);\n\u00a0\nrequire_once(\"vendor\/autoload.php\");\n\u00a0\nuse ArtisansWebOptimizer;\n\u00a0\nif (isset($_POST['submit'])) {\n\u00a0\u00a0\u00a0\u00a0$supported_images = array('image\/gif', 'image\/jpg', 'image\/jpeg', 'image\/png');\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if (!file_exists(getcwd(). '\/uploads')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mkdir(getcwd(). '\/uploads', 0777);\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0foreach($_FILES['images']['name'] as $key=&gt;$val) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$file_name = $_FILES['images']['name'][$key];\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ get file extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));\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$filenamewithoutextension = pathinfo($file_name, PATHINFO_FILENAME);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (in_array($_FILES['images']['type'][$key], $supported_images)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filename_to_store = $filenamewithoutextension.'_'.time().'.' .$ext;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0move_uploaded_file($_FILES['images']['tmp_name'][$key], getcwd().'\/uploads\/'.$filename_to_store);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ optimize image\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img = new Optimizer();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$source = getcwd().'\/uploads\/'.$filename_to_store;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img-&gt;optimize($source);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0exit;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0echo \"Files uploaded successfully.\";\n}<\/code><\/pre>\n<p>J&rsquo;esp\u00e8re que vous comprenez comment t\u00e9l\u00e9charger et compresser plusieurs images en PHP. J&rsquo;aimerais entendre vos pens\u00e9es et suggestions 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\/glisser-deposer-le-telechargement-de-fichiers-a-l-aide-de-javascript-et-php\/\" title=\"Glisser-d\u00e9poser le t\u00e9l\u00e9chargement de fichiers \u00e0 l&#039;aide de JavaScript et PHP\">Glisser-d\u00e9poser le t\u00e9l\u00e9chargement de fichiers \u00e0 l&rsquo;aide de JavaScript et PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/redimensionner-l-image-en-php-a-l-aide-de-la-bibliotheque-d-images-d-intervention\/\" title=\"Redimensionner l&#039;image en PHP \u00e0 l&#039;aide de la biblioth\u00e8que d&#039;images d&#039;intervention\">Redimensionner l&rsquo;image en PHP \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\/telecharger-une-image-a-l-aide-de-la-bibliotheque-bulletproof-en-php\/\" title=\"T\u00e9l\u00e9charger une image \u00e0 l&#039;aide de la biblioth\u00e8que Bulletproof en PHP\">T\u00e9l\u00e9charger une image \u00e0 l&rsquo;aide de la biblioth\u00e8que Bulletproof en PHP<\/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 \u00e0 t\u00e9l\u00e9charger et compresser plusieurs images en PHP ? Dans cet article, nous montrons comment compresser des images apr\u00e8s les avoir t\u00e9l\u00e9charg\u00e9es sur le serveur.<\/p>\n","protected":false},"author":1,"featured_media":21612,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[273],"tags":[844],"class_list":["post-25586","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-4","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/25586","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=25586"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/25586\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media\/21612"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media?parent=25586"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/categories?post=25586"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/tags?post=25586"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}