{"id":25204,"date":"2021-06-01T19:22:00","date_gmt":"2021-06-01T16:22:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25204"},"modified":"2021-10-18T02:09:48","modified_gmt":"2021-10-17T23:09:48","slug":"comment-optimiser-l-image-lors-du-telechargement-en-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fr\/comment-optimiser-l-image-lors-du-telechargement-en-php\/","title":{"rendered":"Comment optimiser l&rsquo;image lors du t\u00e9l\u00e9chargement en PHP"},"content":{"rendered":"<p>R\u00e9cemment, l&rsquo;un des lecteurs m&rsquo;a demand\u00e9 comment optimiser les images lors du t\u00e9l\u00e9chargement en PHP. Pour r\u00e9pondre \u00e0 la question, j&rsquo;ai d\u00e9cid\u00e9 d&rsquo;\u00e9crire un article qui montrera comment r\u00e9duire ou compresser la taille du fichier au moment de le t\u00e9l\u00e9charger.<\/p>\n<p>En tant que d\u00e9veloppeur, le t\u00e9l\u00e9chargement de fichiers est notre t\u00e2che habituelle. Nous le faisons toujours de mani\u00e8re traditionnelle. En utilisant la fonction int\u00e9gr\u00e9e, <code>move_uploaded_file<\/code>nous d\u00e9pla\u00e7ons les images dans le r\u00e9pertoire et les laissons telles quelles. Pensons-nous \u00e0 quelques points comme quelle est la taille de l&rsquo;image t\u00e9l\u00e9charg\u00e9e\u00a0? Cette image mettra-t-elle du temps \u00e0 se charger sur un site Web\u00a0? Puis-je optimiser une image sans perdre sa qualit\u00e9 ?<\/p>\n<p>Les images jouent un r\u00f4le important dans la vitesse du site. Les images lourdes ralentissent la vitesse de la page, ce qui entra\u00eene une perte de votre audience et de votre trafic. Cette situation n&rsquo;est pas abordable. Nous faisons beaucoup d&rsquo;efforts pour d\u00e9velopper l&rsquo;audience et le trafic. Donc, en tant que bonne pratique, vous devez optimiser l&rsquo;image lors du t\u00e9l\u00e9chargement.<\/p>\n<p>Dans cet article, je vais utiliser le service <a href=\"https:\/\/tinypng.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">TinyPNG<\/a> pour optimiser les images. Nous allons \u00e9crire un code pour cela dans quelques instants. En attendant, ci-dessous se trouve la capture d&rsquo;\u00e9cran de tinypng.com pour visualiser la diff\u00e9rence entre l&rsquo;image originale et optimis\u00e9e.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20382-6081e8cbba932.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-20382-6081e8cbba932.png\" alt=\"Comment optimiser l&#039;image lors du t\u00e9l\u00e9chargement en PHP\" ><\/a><\/p>\n<h3>Utilisez TinyPNG pour optimiser l&rsquo;image lors du t\u00e9l\u00e9chargement<\/h3>\n<p>Pour commencer, vous devez installer la biblioth\u00e8que TinyPNG. Installez la biblioth\u00e8que \u00e0 l&rsquo;aide de la commande ci-dessous.<\/p>\n<pre><code>composer require tinify\/tinify<\/code><\/pre>\n<p>Apr\u00e8s avoir install\u00e9 la biblioth\u00e8que, r\u00e9cup\u00e9rez votre cl\u00e9 API sur le site Web de <a href=\"https:\/\/tinypng.com\/developers\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">TinyPNG<\/a>.<\/p>\n<p><strong>Remarque<\/strong>: TinyPNG permet de compresser 500 images gratuitement par mois. Pour plus de 500 images, vous devez les payer. Si vous exploitez un petit site Web, ce quota est suffisant.<\/p>\n<p>Une fois que vous \u00eates pr\u00eat avec la cl\u00e9 API, commen\u00e7ons par le code. Je cr\u00e9e un formulaire HTML simple qui contient une entr\u00e9e de fichier et un bouton d&rsquo;envoi.<\/p>\n<pre><code>&lt;form method=\"post\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"file\" name=\"myfile\" accept=\"image\/*\" required \/&gt;&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>Lorsque les utilisateurs t\u00e9l\u00e9chargent une image \u00e0 l&rsquo;aide de ce formulaire, les d\u00e9veloppeurs \u00e9crivent le type de code ci-dessous pour d\u00e9placer l&rsquo;image t\u00e9l\u00e9charg\u00e9e sur le serveur.<\/p>\n<pre><code>if (isset($_POST['submit'])) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$allowed_mime_types = array('image\/gif', 'image\/jpg', 'image\/jpeg', 'image\/png');\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if (!in_array($_FILES['myfile']['type'], $allowed_mime_types)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo 'Invalid file format.';\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0exit();\n\u00a0\u00a0\u00a0\u00a0}\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\n\u00a0\u00a0\u00a0\u00a0$src_file_name = $_FILES['myfile']['name'];\n\u00a0\u00a0\u00a0\u00a0move_uploaded_file($_FILES['myfile']['tmp_name'], getcwd().'\/uploads\/'.$src_file_name);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0echo \"File uploaded successfully\";\n}<\/code><\/pre>\n<p>Le code ci-dessus est correct et il n&rsquo;y a aucun probl\u00e8me \u00e0 l&rsquo;exception de la partie manquante de l&rsquo;optimisation de l&rsquo;image. Pour optimiser les images, il suffit d&rsquo;ajouter 2 lignes de code apr\u00e8s l&rsquo; <code>move_uploaded_file<\/code>instruction.<\/p>\n<pre><code>\/\/optimize image using TinyPNG\n$source = TinifyfromFile(getcwd().'\/uploads\/'.$src_file_name);\n$source-&gt;toFile(getcwd().'\/uploads\/'.$src_file_name);<\/code><\/pre>\n<p>Les 2 lignes ci-dessus prennent une image du chemin source, l&rsquo;optimisent avec la biblioth\u00e8que TinyPNG sans perte de qualit\u00e9 et l&rsquo;enregistrent dans le m\u00eame chemin source. En d&rsquo;autres termes, il remplace l&rsquo;image d&rsquo;origine par la version optimis\u00e9e.<\/p>\n<p>Notre code final est le suivant.<\/p>\n<pre><code>&lt;?php\nrequire_once(\"vendor\/autoload.php\");\n\u00a0\nTinifysetKey(\"TINYPNG_API_KEY\"); \/\/pass your actual API key\n\u00a0\nif (isset($_POST['submit'])) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$allowed_mime_types = array('image\/gif', 'image\/jpg', 'image\/jpeg', 'image\/png');\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if (!in_array($_FILES['myfile']['type'], $allowed_mime_types)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo 'Invalid file format.';\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0exit();\n\u00a0\u00a0\u00a0\u00a0}\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\n\u00a0\u00a0\u00a0\u00a0$src_file_name = $_FILES['myfile']['name'];\n\u00a0\u00a0\u00a0\u00a0move_uploaded_file($_FILES['myfile']['tmp_name'], getcwd().'\/uploads\/'.$src_file_name);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/\/optimize image using TinyPNG\n\u00a0\u00a0\u00a0\u00a0$source = TinifyfromFile(getcwd().'\/uploads\/'.$src_file_name);\n\u00a0\u00a0\u00a0\u00a0$source-&gt;toFile(getcwd().'\/uploads\/'.$src_file_name);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0echo \"File uploaded successfully.\";\n}\n?&gt;\n&lt;form method=\"post\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"file\" name=\"myfile\" accept=\"image\/*\" required \/&gt;&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>Allez-y et essayez-le. Vous devriez voir la version optimis\u00e9e de l&rsquo;image \u00eatre stock\u00e9e dans votre r\u00e9pertoire.<\/p>\n<p>J&rsquo;esp\u00e8re que vous comprenez comment optimiser l&rsquo;image lors du t\u00e9l\u00e9chargement 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\/tinypng-compresse-des-images-a-l-aide-de-php\/\" title=\"TinyPNG compresse des images \u00e0 l&#039;aide de PHP\">TinyPNG compresse des images \u00e0 l&rsquo;aide de PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/telecharger-et-compresser-plusieurs-images-en-php\/\" title=\"T\u00e9l\u00e9charger et compresser plusieurs images en PHP\">T\u00e9l\u00e9charger et compresser plusieurs images en PHP<\/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<\/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>Dans cet article, je vous montre comment optimiser l&rsquo;image lors du t\u00e9l\u00e9chargement en PHP \u00e0 l&rsquo;aide de la biblioth\u00e8que TinyPNG. Les images jouent un r\u00f4le tr\u00e8s important dans le site Web.<\/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-25204","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\/25204","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=25204"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/25204\/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=25204"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/categories?post=25204"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/tags?post=25204"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}