{"id":26094,"date":"2021-06-09T15:20:00","date_gmt":"2021-06-09T12:20:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=26094"},"modified":"2021-10-17T18:25:05","modified_gmt":"2021-10-17T15:25:05","slug":"mitme-pildi-uleslaadimine-ja-tihendamine-php-s","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/et\/mitme-pildi-uleslaadimine-ja-tihendamine-php-s\/","title":{"rendered":"Mitme pildi \u00fcleslaadimine ja tihendamine PHP-s"},"content":{"rendered":"<p>Hiljuti k\u00fcsis \u00fcks meie lugejatest, kuidas PHP-s mitu pilti \u00fcles laadida ja kokku pakkida. On teatud stsenaariume, kus peame lubama kasutajatel \u00fcles laadida mitu pilti. Alati on hea tava piltide optimeerimine \u00fcleslaadimise ajal. Selles artiklis uurime mitme pildi \u00fcleslaadimist ja kuidas pilte \u00fcleslaadimise ajal tihendada.<\/p>\n<h3>Miks peame pildifaili suurust v\u00e4hendama?<\/h3>\n<p>Pole kahtlust, et piltidel on teie veebisaidil oluline roll. Pilkup\u00fc\u00fcdvad pildid t\u00f5mbavad lugejate t\u00e4helepanu ja nad veedaksid veebisaidil rohkem aega. Kuid samal ajal aeglustavad suuremahulised pildid teie veebisaiti. Kuna see v\u00f5tab rohkem ribalaiust, v\u00f5tab teie veebisait veebilehtede laadimiseks kauem aega. Saidi omanikud peavad p\u00f6\u00f6rama t\u00e4helepanu pildifaili suuruse v\u00e4hendamisele ja kasutama selle jaoks parimat pildi tihendamise t\u00f6\u00f6riista.<\/p>\n<p>N\u00e4itan teile kahte viisi piltide tihendamiseks &#8211; TinyPNG ja artisansweb <a href=\"https:\/\/github.com\/artisansweb\/image-optimizer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">\/ image-optimizer<\/a> pakett.<\/p>\n<p><a href=\"https:\/\/tinypng.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">TinyPNG<\/a> on \u00fcks populaarsemaid <a href=\"https:\/\/tinypng.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">pildikompressorite<\/a> teenuseid veebis. See teenus v\u00f5imaldab pakkida 500 pilti kuus tasuta nende API-de kaudu. Rohkem kui 500 pildi eest peate need maksma.<\/p>\n<p>Kui peate optimeerima rohkem kui 500 pilti kuus ja ei soovi maksta, siis kasutage paketti \u201ek\u00e4sit\u00f6\u00f6lisveeb \/ pildi optimeerija&quot;. See pakett kasutab pildi optimeerimiseks teenust <a href=\"https:\/\/resmush.it\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">reSmush.it<\/a>.<\/p>\n<p>Soovitaksin proovida m\u00f5lemat lahendust, v\u00f5rrelda v\u00e4ljundit ja valida endale sobiv lahendus.<\/p>\n<p>Olles seda \u00f6elnud, vaatame, kuidas pilte p\u00e4rast nende \u00fcleslaadimist tihendada.<\/p>\n<h3>TinyPNG-ga alustamine<\/h3>\n<p>Alustamiseks peate hankima TinyPNG-lt API v\u00f5tme. API-v\u00f5tme saamiseks <a href=\"https:\/\/tinypng.com\/developers\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kl\u00f5psake siin<\/a>. Peate lihtsalt sisestama oma nime ja e-posti aadressi ning saate oma v\u00f5tme meili.<\/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=\"Mitme pildi \u00fcleslaadimine ja tihendamine PHP-s\" ><\/a><\/p>\n<p>Kui olete oma arendaja v\u00f5tme k\u00e4tte saanud, installige PHP kogu, mille pakub TinyPNG. Teegi installimiseks peaks teil olema s\u00fcsteemi installitud <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a>. Avage terminal oma projekti juurkataloogis ja k\u00e4ivitage k\u00e4sk:<\/p>\n<pre><code>composer require tinify\/tinify<\/code><\/pre>\n<h3>Kuidas tihendada pilte TinyPNG abil<\/h3>\n<p>Nagu selle artikli pealkirjas mainitud, vaatame, kuidas mitu pilti \u00fcles laadida ja kokku pakkida. Selleks peame mitme pildi sirvimiseks looma HTML-vormi, millel on failisisestus. Looge <code>index.php<\/code>ja asetage sellesse kood allpool.<\/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>Andsin failisisendile nime piltidena []. Selle p\u00f5hjuseks on asjaolu, et serveri poolel vajame failide massiivi, kuna kasutaja sirvib mitut pilti.<\/p>\n<p>Kui oleme pilte sirvinud ja vajutanud nuppu Esita, saadab see vormi andmed faili <code>process_images.php<\/code>. See on fail, kuhu peame kirjutama koodi piltide \u00fcleslaadimiseks ja tihendamiseks.<\/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>Asendage kohat\u00e4ide kindlasti oma tegeliku API-v\u00f5tmega. \u00dclaltoodud koodis genereerime ainulaadse failinime, lisades sellele aja. Kui pilt on serverisse \u00fcles laaditud, saadame selle optimeerimiseks TinyPNG API-le. Vastutasuks saame tihendatud versiooni pildist, mille salvestame samasse kohta ja sama failinimega.<\/p>\n<h3>Piltide tihendamine k\u00e4sit\u00f6\u00f6veebi \/ pildi optimeerija paketi abil<\/h3>\n<p>Olen v\u00e4lja t\u00f6\u00f6tanud paketi <a href=\"https:\/\/github.com\/artisansweb\/image-optimizer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Image Optimizer<\/a>. See pakett kasutab piltide optimeerimiseks kapoti all <a href=\"https:\/\/resmush.it\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">olevat<\/a> teenust <a href=\"https:\/\/resmush.it\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">reSmush.it<\/a>. Kui otsite tasuta teenust, proovige seda paketti proovida. ReSmush.it on seni optimeerinud miljardeid pilte. See pakett ei n\u00f5ua \u00fchtegi v\u00f5tit ega registreerimist. Lihtsalt \u00fchendage see ja olete valmis.<\/p>\n<p>Pildi optimeerija paketiga alustamiseks installige see k\u00e4suga:<\/p>\n<pre><code>composer require artisansweb\/image-optimizer<\/code><\/pre>\n<p>J\u00e4rgmisena muudetakse <code>process_image.php<\/code>testamendis olevat koodi j\u00e4rgmiselt.<\/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>Loodan, et saate aru, kuidas PHP-s mitu pilti \u00fcles laadida ja kokku pakkida. Tahaksin kuulda teie m\u00f5tteid ja ettepanekuid allpool olevas kommentaaride jaotises.<\/p>\n<h4>seotud artiklid<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/pukseerige-faili-uleslaadimine-javascripti-ja-php-abil\/\" title=\"Pukseerige faili \u00fcleslaadimine JavaScripti ja PHP abil\">Pukseerige faili \u00fcleslaadimine JavaScripti ja PHP abil<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/php-s-saate-pildi-suurust-muuta-kasutades-sekkumispiltide-kogu\/\" title=\"PHP-s saate pildi suurust muuta, kasutades sekkumispiltide kogu\">PHP-s saate pildi suurust muuta, kasutades sekkumispiltide kogu<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/laadige-pilt-ules-php-s-kuulikindla-teegi-abil\/\" title=\"Laadige pilt \u00fcles PHP-s kuulikindla teegi abil\">Laadige pilt \u00fcles PHP-s kuulikindla teegi abil<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kas otsite mitme pildi \u00fcleslaadimist ja tihendamist PHP-s? Selles artiklis n\u00e4itame, kuidas p\u00e4rast serverisse \u00fcleslaadimist pilte tihendada.<\/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":[274],"tags":[842],"class_list":["post-26094","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-5","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/26094","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/comments?post=26094"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/26094\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media\/21612"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media?parent=26094"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/categories?post=26094"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/tags?post=26094"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}