{"id":25948,"date":"2021-06-09T15:54:00","date_gmt":"2021-06-09T12:54:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25948"},"modified":"2021-10-18T03:04:27","modified_gmt":"2021-10-18T00:04:27","slug":"carica-e-comprimi-piu-immagini-in-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/it\/carica-e-comprimi-piu-immagini-in-php\/","title":{"rendered":"Carica e comprimi pi\u00f9 immagini in PHP"},"content":{"rendered":"<p>Recentemente uno dei nostri lettori ha chiesto come caricare e comprimere pi\u00f9 immagini in PHP. Esistono alcuni scenari in cui \u00e8 necessario consentire agli utenti di caricare pi\u00f9 immagini. \u00c8 sempre buona norma ottimizzare le immagini al momento del caricamento. In questo articolo, studiamo il caricamento di pi\u00f9 immagini e come comprimere le immagini durante il processo di caricamento.<\/p>\n<h3>Perch\u00e9 abbiamo bisogno di ridurre le dimensioni del file immagine?<\/h3>\n<p>Senza dubbio, le immagini giocano un ruolo importante nel tuo sito web. Immagini accattivanti attirano l&#8217;attenzione dei lettori e trascorrono pi\u00f9 tempo sul sito web. Ma allo stesso tempo, le immagini di grandi dimensioni rallentano il tuo sito web. Poich\u00e9 richiede pi\u00f9 larghezza di banda, il tuo sito Web impiega pi\u00f9 tempo per caricare le pagine Web. I proprietari del sito devono prestare attenzione a ridurre le dimensioni del file di immagine e utilizzare il miglior strumento di compressione delle immagini per questo.<\/p>\n<p>Ti mostrer\u00f2 2 modi per comprimere le immagini: TinyPNG e il pacchetto craftsweb <a href=\"https:\/\/github.com\/artisansweb\/image-optimizer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">\/image-optimizer<\/a>.<\/p>\n<p><a href=\"https:\/\/tinypng.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">TinyPNG<\/a> \u00e8 uno dei popolari servizi di compressione di immagini sul web. Questo servizio consente di comprimere gratuitamente 500 immagini al mese tramite le proprie API. Per pi\u00f9 di 500 immagini, devi pagarle.<\/p>\n<p>Se devi ottimizzare pi\u00f9 di 500 immagini al mese e non vuoi pagare, usa il pacchetto &quot;artisansweb\/image-optimizer&quot;. Questo pacchetto utilizza il servizio <a href=\"https:\/\/resmush.it\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">reSmush.it<\/a> per l&#8217;ottimizzazione delle immagini.<\/p>\n<p>Consiglierei di provare entrambe le soluzioni, confrontare l&#8217;output e scegliere quella adatta a te.<\/p>\n<p>Detto questo, diamo un&#8217;occhiata a come comprimere le immagini dopo averle caricate.<\/p>\n<h3>Iniziare con TinyPNG<\/h3>\n<p>Per iniziare, devi ottenere una chiave API da TinyPNG. <a href=\"https:\/\/tinypng.com\/developers\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Fai clic qui<\/a> per ottenere la tua chiave API. Devi solo inserire il tuo nome e indirizzo e-mail e riceverai l&#8217;e-mail per la tua chiave.<\/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=\"Carica e comprimi pi\u00f9 immagini in PHP\" ><\/a><\/p>\n<p>Una volta ottenuta la chiave sviluppatore, installa una libreria PHP fornita da TinyPNG. Dovresti avere <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> installato sul sistema per installare la libreria. Apri il terminale nella directory principale del tuo progetto ed esegui il comando:<\/p>\n<pre><code>composer require tinify\/tinify<\/code><\/pre>\n<h3>Come comprimere le immagini usando TinyPNG<\/h3>\n<p>Come accennato nel titolo di questo articolo, vedremo come caricare e comprimere pi\u00f9 immagini. Per questo, abbiamo bisogno di creare un modulo HTML che abbia input di file per sfogliare pi\u00f9 immagini. Crea <code>index.php<\/code>e inserisci il codice qui sotto in esso.<\/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>All&#8217;input del file ho dato un nome come immagini[]. Questo perch\u00e9 sul lato server abbiamo bisogno di una serie di file poich\u00e9 l&#8217;utente esplorer\u00e0 pi\u00f9 immagini.<\/p>\n<p>Una volta sfogliate le immagini e premuto il pulsante di invio, i dati del modulo verranno inviati al file <code>process_images.php<\/code>. Questo \u00e8 il file in cui dobbiamo scrivere un codice per caricare e comprimere le immagini.<\/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>Assicurati di sostituire il segnaposto con la tua chiave API effettiva. Nel codice sopra, stiamo generando un nome file univoco aggiungendovi il tempo. Una volta caricata un&#8217;immagine sul server, inviamo l&#8217;immagine all&#8217;API TinyPNG per l&#8217;ottimizzazione. In cambio, otteniamo la versione compressa dell&#8217;immagine che memorizziamo nello stesso posto e con lo stesso nome di file.<\/p>\n<h3>Comprimi le immagini utilizzando il pacchetto craftsweb\/image-optimizer<\/h3>\n<p>Ho sviluppato il pacchetto <a href=\"https:\/\/github.com\/artisansweb\/image-optimizer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Image Optimizer<\/a>. Questo pacchetto utilizza il servizio <a href=\"https:\/\/resmush.it\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">reSmush.it<\/a> sotto il cofano per l&#8217;ottimizzazione delle immagini. Se stai cercando un servizio gratuito, prova questo pacchetto. Finora reSmush.it ha ottimizzato miliardi di immagini. Questo pacchetto non richiede di fornire alcuna chiave o registrazione. Basta collegarlo e il gioco \u00e8 fatto.<\/p>\n<p>Per iniziare con il pacchetto Image Optimizer, installalo utilizzando il comando:<\/p>\n<pre><code>composer require artisansweb\/image-optimizer<\/code><\/pre>\n<p>Successivamente, il codice in <code>process_image.php<\/code>verr\u00e0 modificato come segue.<\/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>Spero che tu capisca come caricare e comprimere pi\u00f9 immagini in PHP. Mi piacerebbe sentire i tuoi pensieri e suggerimenti nella sezione commenti qui sotto.<\/p>\n<h4>articoli Correlati<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/trascina-e-rilascia-il-caricamento-di-file-utilizzando-javascript-e-php\/\" title=\"Trascina e rilascia il caricamento di file utilizzando JavaScript e PHP\">Trascina e rilascia il caricamento di file utilizzando JavaScript e PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/ridimensiona-l-immagine-in-php-usando-la-libreria-di-immagini-di-intervento\/\" title=\"Ridimensiona l&#039;immagine in PHP usando la libreria di immagini di intervento\">Ridimensiona l&#8217;immagine in PHP usando la libreria di immagini di intervento<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/carica-l-immagine-utilizzando-la-libreria-antiproiettile-in-php\/\" title=\"Carica l&#039;immagine usando la libreria antiproiettile in PHP\">Carica l&#8217;immagine usando la libreria antiproiettile in PHP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Stai cercando di caricare e comprimere pi\u00f9 immagini in PHP? In questo articolo mostriamo come comprimere le immagini dopo averle caricate sul server.<\/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":[276],"tags":[846],"class_list":["post-25948","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-7","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/25948","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/comments?post=25948"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/25948\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media\/21612"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media?parent=25948"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/categories?post=25948"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/tags?post=25948"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}