{"id":25542,"date":"2021-06-09T16:04:00","date_gmt":"2021-06-09T13:04:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25542"},"modified":"2021-10-17T20:23:29","modified_gmt":"2021-10-17T17:23:29","slug":"lataa-ja-pakkaa-useita-kuvia-php-ssa","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fi\/lataa-ja-pakkaa-useita-kuvia-php-ssa\/","title":{"rendered":"Lataa ja pakkaa useita kuvia PHP: ss\u00e4"},"content":{"rendered":"<p>\u00c4skett\u00e4in yksi lukijoistamme kysyi kuinka ladata ja pakata useita kuvia PHP: ss\u00e4. Joissakin tilanteissa meid\u00e4n on sallittava k\u00e4ytt\u00e4jien ladata useita kuvia. On aina hyv\u00e4 tapa optimoida kuvat lataushetkell\u00e4. T\u00e4ss\u00e4 artikkelissa tutkitaan useiden kuvien lataamista ja kuinka pakata kuvia latausprosessin aikana.<\/p>\n<h3>Miksi meid\u00e4n on pienennett\u00e4v\u00e4 kuvatiedoston kokoa?<\/h3>\n<p>Kuvilla on ep\u00e4ilem\u00e4tt\u00e4 t\u00e4rke\u00e4 rooli verkkosivustollasi. Katseenvangitsevat kuvat her\u00e4tt\u00e4v\u00e4t lukijoiden huomion ja he viett\u00e4v\u00e4t enemm\u00e4n aikaa verkkosivustolla. Mutta samaan aikaan suurikokoiset kuvat hidastavat verkkosivustoasi. Koska se vie enemm\u00e4n kaistanleveytt\u00e4, verkkosivujen lataaminen vie pidemm\u00e4n ajan. Sivuston omistajien on kiinnitett\u00e4v\u00e4 huomiota kuvatiedoston koon pienent\u00e4miseen ja k\u00e4ytett\u00e4v\u00e4 siihen parasta kuvanpakkausty\u00f6kalua.<\/p>\n<p>N\u00e4yt\u00e4n sinulle kaksi tapaa pakata kuvia &#8211; TinyPNG ja <a href=\"https:\/\/github.com\/artisansweb\/image-optimizer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">artisansweb \/ image-optimizer<\/a> -paketti.<\/p>\n<p><a href=\"https:\/\/tinypng.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">TinyPNG<\/a> on yksi suosituimmista <a href=\"https:\/\/tinypng.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kuvakompressoripalveluista<\/a> verkossa. T\u00e4m\u00e4n palvelun avulla voidaan pakata 500 kuvaa kuukaudessa ilmaiseksi niiden sovellusliittymien kautta. Yli 500 kuvasta sinun on maksettava ne.<\/p>\n<p>Jos joudut optimoimaan yli 500 kuvaa kuukaudessa etk\u00e4 halua maksaa, k\u00e4yt\u00e4 sitten artisansweb \/ image-optimizer -pakettia. T\u00e4m\u00e4 paketti k\u00e4ytt\u00e4\u00e4 <a href=\"https:\/\/resmush.it\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">reSmush.it-<\/a> palvelua kuvan optimointiin.<\/p>\n<p>Suosittelen kokeilemaan molempia ratkaisuja, vertaamaan tuotosta ja valitsemaan sinulle sopivan.<\/p>\n<p>T\u00e4m\u00e4n sanottuaan katsotaanpa, miten kuvia pakataan lataamisen j\u00e4lkeen.<\/p>\n<h3>TinyPNG: n k\u00e4yt\u00f6n aloittaminen<\/h3>\n<p>Aloittamiseksi sinun on hankittava TinyPNG: lt\u00e4 API-avain. <a href=\"https:\/\/tinypng.com\/developers\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Napsauta t\u00e4t\u00e4<\/a> saadaksesi API-avaimesi. Sinun tarvitsee vain kirjoittaa nimesi ja s\u00e4hk\u00f6postiosoitteesi, niin saat avaimesi s\u00e4hk\u00f6postin.<\/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=\"Lataa ja pakkaa useita kuvia PHP: ss\u00e4\" ><\/a><\/p>\n<p>Kun olet saanut kehitt\u00e4j\u00e4avaimen, asenna TinyPNG: n tarjoama PHP-kirjasto. Sinun pit\u00e4isi olla <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">S\u00e4velt\u00e4j\u00e4<\/a> asennettuna j\u00e4rjestelm\u00e4\u00e4n asentaa kirjastoon. Avaa p\u00e4\u00e4te projektin juurihakemistossa ja suorita komento:<\/p>\n<pre><code>composer require tinify\/tinify<\/code><\/pre>\n<h3>Kuinka pakata kuvia TinyPNG: n avulla<\/h3>\n<p>Kuten t\u00e4m\u00e4n artikkelin otsikossa mainitaan, aiomme n\u00e4hd\u00e4 kuinka ladata ja pakata useita kuvia. T\u00e4t\u00e4 varten meid\u00e4n on luotava HTML-lomake, jolla on tiedostosy\u00f6tt\u00f6 useiden kuvien selaamiseen. Luo <code>index.php<\/code>ja aseta koodi sen alle.<\/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>Annoin tiedoston sy\u00f6tteelle nimen kuvina []. T\u00e4m\u00e4 johtuu siit\u00e4, ett\u00e4 palvelinpuolella tarvitsemme joukon tiedostoja, koska k\u00e4ytt\u00e4j\u00e4 selaa useita kuvia.<\/p>\n<p>Kun olemme selanneet kuvia ja painaneet L\u00e4het\u00e4-painiketta, se l\u00e4hett\u00e4\u00e4 lomaketiedot tiedostoon <code>process_images.php<\/code>. T\u00e4m\u00e4 on tiedosto, johon meid\u00e4n on kirjoitettava koodi kuvien lataamista ja pakkaamista varten.<\/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>Muista korvata paikkamerkki todellisella API-avaimella. Yll\u00e4 olevassa koodissa luomme yksil\u00f6llisen tiedostonimen lis\u00e4\u00e4m\u00e4ll\u00e4 siihen aikaa. Kun kuva on ladattu palvelimelle, l\u00e4het\u00e4mme kuvan TinyPNG-sovellusliittym\u00e4\u00e4n optimointia varten. Vastineeksi saamme pakatun version kuvasta, jonka tallennamme samaan paikkaan ja samalla tiedostonimell\u00e4.<\/p>\n<h3>Pakkaa kuvat k\u00e4ytt\u00e4m\u00e4ll\u00e4 artisansweb \/ image-optimizer -pakettia<\/h3>\n<p>Olen kehitt\u00e4nyt <a href=\"https:\/\/github.com\/artisansweb\/image-optimizer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Image Optimizer<\/a> -paketin. T\u00e4m\u00e4 paketti k\u00e4ytt\u00e4\u00e4 <a href=\"https:\/\/resmush.it\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">reSmush.it-<\/a> palvelua hupun alla kuvien optimoimiseksi. Jos etsit ilmaista palvelua, kokeile t\u00e4t\u00e4 pakettia. ReSmush.it on t\u00e4h\u00e4n menness\u00e4 optimoinut miljardeja kuvia. T\u00e4m\u00e4 paketti ei vaadi avainta tai rekister\u00f6inti\u00e4. Liit\u00e4 vain se ja olet valmis.<\/p>\n<p>Aloita Image Optimizer -paketin asentaminen asentamalla se komennolla:<\/p>\n<pre><code>composer require artisansweb\/image-optimizer<\/code><\/pre>\n<p>Seuraavaksi koodia koodissa <code>process_image.php<\/code>muutetaan seuraavasti.<\/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>Toivon, ett\u00e4 ymm\u00e4rr\u00e4t kuinka ladata ja pakata useita kuvia PHP: ss\u00e4. Haluaisin kuulla ajatuksesi ja ehdotuksesi alla olevassa kommenttiosassa.<\/p>\n<h4>Aiheeseen liittyv\u00e4t artikkelit<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/veda-ja-pudota-tiedostolataus-kayttamalla-javascriptia-ja-php-ta\/\" title=\"Ved\u00e4 ja pudota tiedostolataus JavaScriptin ja PHP: n avulla\">Ved\u00e4 ja pudota tiedostolataus JavaScriptin ja PHP: n avulla<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/muuta-kuvan-kokoa-php-ssa-intervention-image-library-sovelluksella\/\" title=\"Muuta kuvan kokoa PHP: ss\u00e4 Intervention Image Library -sovelluksella\">Muuta kuvan kokoa PHP: ss\u00e4 Intervention Image Library -sovelluksella<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/lataa-kuva-php-n-bulletproof-library-kirjastolla\/\" title=\"Lataa kuva k\u00e4ytt\u00e4m\u00e4ll\u00e4 luodinkest\u00e4v\u00e4\u00e4 kirjastoa PHP: ss\u00e4\">Lataa kuva k\u00e4ytt\u00e4m\u00e4ll\u00e4 luodinkest\u00e4v\u00e4\u00e4 kirjastoa PHP: ss\u00e4<\/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>Haluatko ladata ja pakata useita kuvia PHP: ss\u00e4? T\u00e4ss\u00e4 artikkelissa n\u00e4ytet\u00e4\u00e4n, kuinka kuvia pakataan palvelimeen lataamisen j\u00e4lkeen.<\/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":[275],"tags":[843],"class_list":["post-25542","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-6","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/25542","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/comments?post=25542"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/25542\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media\/21612"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media?parent=25542"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/categories?post=25542"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/tags?post=25542"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}