{"id":25725,"date":"2021-06-13T17:42:00","date_gmt":"2021-06-13T14:42:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25725"},"modified":"2021-10-17T20:17:54","modified_gmt":"2021-10-17T17:17:54","slug":"muuta-kuvan-kokoa-php-ssa-intervention-image-library-sovelluksella","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fi\/muuta-kuvan-kokoa-php-ssa-intervention-image-library-sovelluksella\/","title":{"rendered":"Muuta kuvan kokoa PHP: ss\u00e4 Intervention Image Library -sovelluksella"},"content":{"rendered":"<p>Etsitk\u00f6 kuinka muuttaa kuvien kokoa PHP: ss\u00e4? Ty\u00f6skennelless\u00e4mme verkkosovelluksessa meid\u00e4n on luotava erilaiset pienoiskuvat alkuper\u00e4isest\u00e4 kuvasta. Pikkukuva on alkuper\u00e4isen kuvan koonmuutettu versio. T\u00e4ss\u00e4 artikkelissa tutkitaan, kuinka kuvia voidaan ladata ja muuttaa PHP: ss\u00e4.<\/p>\n<h3>Miksi kuvien kokoa tulisi muuttaa?<\/h3>\n<p>Sivustolla on useita skenaarioita, joissa meid\u00e4n on n\u00e4ytett\u00e4v\u00e4 lyhyt versio suuresta kuvasta. Suosittu esimerkki on Kuvagalleria. Galleriassa k\u00e4ytimme n\u00e4ytt\u00e4m\u00e4\u00e4n luettelon pienist\u00e4 kuvista. Kun k\u00e4ytt\u00e4j\u00e4 napsauttaa pient\u00e4 kuvaa, se avaa suuren kuvan ponnahdusikkunassa. Toinen esimerkki on aiheeseen liittyvien artikkeleiden n\u00e4ytt\u00e4minen, joissa n\u00e4ytet\u00e4\u00e4n pieni\u00e4 kuvia sek\u00e4 viestin otsikko ja kuvaus.<\/p>\n<p>N\u00e4iss\u00e4 tilanteissa meid\u00e4n on luotava pieni kuva (pikkukuva) alkuper\u00e4ist\u00e4 kuvaa k\u00e4ytt\u00e4m\u00e4ll\u00e4. Pieni pikkukuva pienent\u00e4\u00e4 sivujen kokoa. Koska k\u00e4yt\u00e4t pient\u00e4 pikkukuvaa, selain vaatii pienen kaistanleveyden kuvan lataamiseen. Se lis\u00e4\u00e4 joitain etuja verkkosivustolle. Jotkut niist\u00e4 ovat:<\/p>\n<ul>\n<li>Parantaa palvelimen suorituskyky\u00e4<\/li>\n<li>Pienenn\u00e4 kaistanleveytt\u00e4<\/li>\n<li>Paranna sivunopeutta<\/li>\n<\/ul>\n<p>T\u00e4st\u00e4 huolimatta katsotaanpa, kuinka kuvan kokoa muutetaan PHP: ss\u00e4.<\/p>\n<h3>P\u00e4\u00e4st\u00e4 alkuun<\/h3>\n<p><a href=\"http:\/\/image.intervention.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Intervention Image<\/a> on avoimen l\u00e4hdekoodin kirjasto, joka toimii kuvan koonmuutosty\u00f6kaluna. Konepellin alla Intervention Image k\u00e4ytt\u00e4\u00e4 GD-kirjastoa ja Imagickia kuvank\u00e4sittelyyn ja manipulointiin.<\/p>\n<p>Aloittamiseksi sinun on asennettava Intervention Image -kirjasto sovellukseesi. Suosittelen <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composerin<\/a> k\u00e4ytt\u00f6\u00e4 kirjaston asennukseen.<\/p>\n<p>Avaa p\u00e4\u00e4te projektin juurihakemistossa ja suorita alla oleva komento.<\/p>\n<pre><code>composer require intervention\/image<\/code><\/pre>\n<p>Kun olet asentanut kirjaston, sinun on sis\u00e4llytett\u00e4v\u00e4 sen ymp\u00e4rist\u00f6 sovellukseesi. Lis\u00e4\u00e4 t\u00e4t\u00e4 varten kahden rivin alapuolelle PHP-tiedosto.<\/p>\n<pre><code>&lt;?php\n\/\/ include composer autoload\nrequire 'vendor\/autoload.php';\n\u00a0\u00a0\nuse InterventionImageImageManagerStatic as Image;<\/code><\/pre>\n<p>Kuvan lataamiseksi ja koon muuttamiseksi tarvitsemme lomakkeen, jossa voi selata kuvaa ja painaa L\u00e4het\u00e4-painiketta. K\u00e4yt\u00e4 alla olevaa HTML-koodia, joka sis\u00e4lt\u00e4\u00e4 tiedostosy\u00f6t\u00f6n ja l\u00e4hetyspainikkeen.<\/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=\"image\" \/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"submit\" value=\"Submit\"&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<h3>Muuta kuvan kokoa PHP: ss\u00e4 Intervention Image -sovelluksella<\/h3>\n<p>Olemme asentaneet kirjaston ja luoneet lomakkeen. Seuraavaksi meid\u00e4n on ladattava ja muutettava kuvan koko lennossa. Aion luoda kaksi hakemistoa <code>uploads<\/code>ja <code>thumbnails<\/code>. Vuonna <code>uploads<\/code>kansio, s\u00e4ilyt\u00e4mme alkuper\u00e4isen kuvan. Kuvan pikkukuva tallennetaan <code>thumbnails<\/code>hakemistoon.<\/p>\n<p>K\u00e4yt\u00e4 alla olevaa koodia, joka tallentaa kuvan alkuper\u00e4isen ja pikkukuvan version hakemistoon <code>uploads<\/code>ja <code>thumbnails<\/code>hakemistoon.<\/p>\n<pre><code>&lt;?php\nrequire 'vendor\/autoload.php';\n\u00a0\u00a0\nuse InterventionImageImageManagerStatic as Image;\n\u00a0\n$allowed_mime_type = array('image\/jpg', 'image\/jpeg', 'image\/png', 'image\/gif');\n\u00a0\nif (isset($_POST['submit'])) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if (in_array($_FILES['image']['type'], $allowed_mime_type)) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (!file_exists('uploads')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mkdir('uploads', 0755);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filename = time().'_'.$_FILES['image']['name'];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filepath = 'uploads\/'. $filename;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0move_uploaded_file($_FILES['image']['tmp_name'], $filepath);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (!file_exists('uploads\/thumbnails')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mkdir('uploads\/thumbnails', 0755);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$thumbnailpath = 'uploads\/thumbnails\/'. $filename;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img = Image::make($filepath);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img-&gt;resize(300, null, function ($constraint) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$constraint-&gt;aspectRatio();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img-&gt;save($thumbnailpath);\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Yll\u00e4 olevassa koodissa l\u00e4p\u00e4isin leveyden 300 ja muutoin kuvan kokoa s\u00e4ilytt\u00e4m\u00e4ll\u00e4 niiden kuvasuhde. Voit v\u00e4litt\u00e4\u00e4 leveysarvon vaatimuksesi mukaan. Kuvasuhteen s\u00e4ilytt\u00e4mist\u00e4 suositellaan kuvan kokoa muutettaessa. Kuvasuhdetta k\u00e4ytett\u00e4ess\u00e4 kuva ei veny. Jos etsit kovaa satoa, korvaa sitten alla olevat rivit<\/p>\n<pre><code>$img-&gt;resize(300, null, function ($constraint) {\n\u00a0\u00a0\u00a0\u00a0$constraint-&gt;aspectRatio();\n});<\/code><\/pre>\n<p>Kanssa<\/p>\n<pre><code>$img-&gt;resize(300, 150)-&gt;save($thumbnailpath);<\/code><\/pre>\n<h3>Johtop\u00e4\u00e4t\u00f6s<\/h3>\n<p>T\u00e4ss\u00e4 opetusohjelmassa tutkittiin, kuinka kuvien kokoa muutetaan s\u00e4ilytt\u00e4m\u00e4ll\u00e4 niiden kuvasuhde. Kirjoitimme my\u00f6s koodin, joka rajaa kuvan kovasti. Intervention Image -kirjasto tarjoaa muutama vaihtoehto lis\u00e4\u00e4 <code>resize<\/code>menetelm\u00e4\u00e4. Voit lukea lis\u00e4\u00e4 heid\u00e4n <a href=\"http:\/\/image.intervention.io\/api\/resize\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentoinnistaan<\/a>.<\/p>\n<h4>Aiheeseen liittyv\u00e4t artikkelit<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/muuta-kuvan-kokoa-laravelissa-kayttamalla-interventiokuvakirjastoa\/\" title=\"Muuta kuvan kokoa Laravelissa k\u00e4ytt\u00e4m\u00e4ll\u00e4 interventiokuvakirjastoa\">Muuta kuvan kokoa Laravelissa k\u00e4ytt\u00e4m\u00e4ll\u00e4 interventiokuvakirjastoa<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/muuta-kuvan-kokoa-php-ssa-tinypng-n-avulla\/\" title=\"Muuta kuvan kokoa PHP: ss\u00e4 TinyPNG: n avulla\">Muuta kuvan kokoa PHP: ss\u00e4 TinyPNG: n avulla<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/veda-ja-pudota-tiedostolataus-kayttamalla-javascriptia-ja-php-ta\/\" title=\"Ved\u00e4 ja pudota tiedostolataus k\u00e4ytt\u00e4m\u00e4ll\u00e4 JavaScripti\u00e4 ja PHP: t\u00e4\">Ved\u00e4 ja pudota tiedostolataus k\u00e4ytt\u00e4m\u00e4ll\u00e4 JavaScripti\u00e4 ja PHP: t\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>T\u00e4ss\u00e4 artikkelissa tutkitaan, kuinka kuvien kokoa muutetaan PHP: ss\u00e4 Intervention Image Library -sovelluksella. Pikkukuvan k\u00e4ytt\u00e4minen pienent\u00e4\u00e4 verkkosivun kokoa<\/p>\n","protected":false},"author":1,"featured_media":21621,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[275],"tags":[843],"class_list":["post-25725","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\/25725","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=25725"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/25725\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media\/21621"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media?parent=25725"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/categories?post=25725"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/tags?post=25725"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}