{"id":25063,"date":"2021-05-30T18:42:00","date_gmt":"2021-05-30T15:42:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25063"},"modified":"2021-10-17T20:31:49","modified_gmt":"2021-10-17T17:31:49","slug":"kuinka-ladata-rajata-ja-muuttaa-kuvan-kokoa-jqueryn-ja-php-n-avulla","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fi\/kuinka-ladata-rajata-ja-muuttaa-kuvan-kokoa-jqueryn-ja-php-n-avulla\/","title":{"rendered":"Kuinka ladata, rajata ja muuttaa kuvan kokoa jQueryn ja PHP: n avulla"},"content":{"rendered":"<p>Jos sinulla on verkkosivusto, kannattaa ehk\u00e4 rajata kuva tietyiss\u00e4 tilanteissa. Oletetaan, ett\u00e4 haluat antaa k\u00e4ytt\u00e4j\u00e4n rajata profiilikuvat ennen lataamista. T\u00e4ss\u00e4 artikkelissa tutkitaan kuvan lataamista, rajaamista ja koon muuttamista imgAreaSelectin ja PHP: n avulla.<\/p>\n<p>Voimme sanoa, ett\u00e4 kun rajaamme kuvaa, muutamme sen kokoa s\u00e4\u00e4t\u00e4m\u00e4ll\u00e4 rajatun osan annetuilla koordinaateilla.<\/p>\n<p><a href=\"https:\/\/plugins.jquery.com\/imgareaselect\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">imgAreaSelect<\/a> on jQuery-laajennus, joka tarjoaa ominaisuuden kuvien rajaamiseen. Se on kevyt laajennus ja helppo k\u00e4ytt\u00e4\u00e4.<\/p>\n<p>Aloittamiseksi sinun on k\u00e4ytett\u00e4v\u00e4 imgAreaSelect-laajennusta ja <a href=\"http:\/\/image.intervention.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Intervention Image<\/a> -kirjastoa. K\u00e4ytt\u00e4m\u00e4ll\u00e4 imgAreaSelect valitsemme kuva-alueen, joka on rajattava, ja Internention Image -kirjasto auttaa meit\u00e4 tallentamaan kuvan alkuper\u00e4isen ja kopioidun version palvelimelle.<\/p>\n<p>T\u00e4m\u00e4n sanottuaan katsotaanpa, kuinka kuva ladataan, rajataan ja muutetaan kokoa jQueryn ja PHP: n avulla.<\/p>\n<h3>Asennus<\/h3>\n<p>Lataa <a href=\"https:\/\/plugins.jquery.com\/imgareaselect\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">imgAreaSelect-<\/a> laajennus annetusta linkist\u00e4. Interventon Image -sovelluksen asentamiseen suosittelen <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composerin<\/a> k\u00e4ytt\u00f6\u00e4. Asenna Intervention Image -kirjasto suorittamalla alla oleva komento projektin juurihakemistossa.<\/p>\n<pre><code>composer require intervention\/image<\/code><\/pre>\n<p>Kun olet valmis, varmista, ett\u00e4 hakemistorakenne n\u00e4ytt\u00e4\u00e4 alla olevalta kuvakaappaukselta.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20408-6081ed5ce4b24.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-20408-6081ed5ce4b24.png\" alt=\"Kuinka ladata, rajata ja muuttaa kuvan kokoa jQueryn ja PHP: n avulla\" ><\/a><\/p>\n<h3>Kuinka k\u00e4ytt\u00e4\u00e4 imgAreaSelect-ohjelmaa<\/h3>\n<p>Jotta voisimme k\u00e4ytt\u00e4\u00e4 imgAreaSelectia, meid\u00e4n on ensin sis\u00e4llytett\u00e4v\u00e4 heid\u00e4n CSS- ja JS-tiedosto jQuery-kirjaston kanssa.<\/p>\n<pre><code>&lt;link rel=\"stylesheet\" href=\"css\/imgareaselect.css\"&gt;\n&lt;script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jquery\/3.5.1\/jquery.min.js\"&gt;&lt;\/script&gt;\n&lt;script src=\"js\/jquery.imgareaselect.js\"&gt;&lt;\/script&gt;<\/code><\/pre>\n<p>Seuraavaksi vaaditaan yksinkertainen lomake, jossa k\u00e4ytt\u00e4j\u00e4 voi selata kuvaa ja l\u00e4hett\u00e4\u00e4 sen palvelinpuolen k\u00e4sittelyyn.<\/p>\n<pre><code>&lt;form action=\"crop.php\" method=\"post\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0Upload Image: &lt;input type=\"file\" name=\"image\" id=\"image\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"hidden\" name=\"x1\" value=\"\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"hidden\" name=\"y1\" value=\"\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"hidden\" name=\"w\" value=\"\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"hidden\" name=\"h\" value=\"\" \/&gt;&lt;br&gt;&lt;br&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"submit\" value=\"Submit\" \/&gt;\n&lt;\/form&gt;\n\u00a0\n&lt;p&gt;&lt;img id=\"previewimage\" style=\"display:none;\"\/&gt;&lt;\/p&gt;<\/code><\/pre>\n<p>Yll\u00e4 oleva lomake n\u00e4ytt\u00e4\u00e4 tiedoston sy\u00f6tt\u00f6- ja l\u00e4hetyspainikkeen. Olen ottanut piilotetut kent\u00e4t muodossa, jonka t\u00e4ytyy rajata kuva palvelinpuolella. Pohjimmiltaan n\u00e4m\u00e4 piilotetut kent\u00e4t l\u00e4hett\u00e4v\u00e4t kuvan koordinaatit sen rajaamista varten.<\/p>\n<p>Kun k\u00e4ytt\u00e4j\u00e4 selaa kuvaa, n\u00e4yt\u00e4mme kuvan, jossa k\u00e4ytt\u00e4j\u00e4 voi valita rajattavan alueen. Alla olevan koodin avulla k\u00e4ytt\u00e4j\u00e4 voi esikatsella kuvaa ja valita kuvan rajattavan alueen.<\/p>\n<pre><code>&lt;script&gt;\njQuery(function($) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0var p = $(\"#previewimage\");\n\u00a0\u00a0\u00a0\u00a0$(\"body\").on(\"change\", \"#image\", function(){\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var imageReader = new FileReader();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0imageReader.readAsDataURL(document.getElementById(\"image\").files[0]);\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0imageReader.onload = function (oFREvent) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0p.attr('src', oFREvent.target.result).fadeIn();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0};\n\u00a0\u00a0\u00a0\u00a0});\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$('#previewimage').imgAreaSelect({\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0onSelectEnd: function (img, selection) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('input[name=\"x1\"]').val(selection.x1);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('input[name=\"y1\"]').val(selection.y1);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('input[name=\"w\"]').val(selection.width);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('input[name=\"h\"]').val(selection.height);\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});\n&lt;\/script&gt;<\/code><\/pre>\n<h3>Palvelinpuolen lataaminen, rajaaminen ja koon muuttaminen<\/h3>\n<p>Kun lomake l\u00e4hetet\u00e4\u00e4n, se ohjaa <code>crop.php<\/code>tiedostoon, johon lataamme ja rajaamme kuvan palvelinpuolella. T\u00e4m\u00e4 tiedosto hyv\u00e4ksyy kuvan sy\u00f6tteen ja kuvan koordinaatit rajattavaksi.<\/p>\n<p>Ensinn\u00e4kin sis\u00e4llytet\u00e4\u00e4n Intervention Image -kirjaston ymp\u00e4rist\u00f6.<\/p>\n<pre><code>&lt;?php\nrequire 'vendor\/autoload.php';\n\u00a0\nuse InterventionImageImageManagerStatic as Image;<\/code><\/pre>\n<p>Aion k\u00e4ytt\u00e4\u00e4 <code>crop()<\/code>kirjastomenetelm\u00e4\u00e4 luodaksesi rajatun version alkuper\u00e4isest\u00e4 kuvasta. Rajaus() -funktion parametrit ovat leveys, korkeus ja x-akselin ja y-akselin koordinaatit. Voit lukea lis\u00e4\u00e4 heid\u00e4n <a href=\"https:\/\/image.intervention.io\/api\/crop\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentoinnistaan<\/a>.<\/p>\n<p><strong>crop.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire 'vendor\/autoload.php';\n\u00a0\nuse InterventionImageImageManagerStatic as Image;\n\u00a0\nif(isset($_POST['submit'])) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0if(isset($_FILES['image']['name']) &amp;&amp; !empty($_FILES['image']['name'])) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(!file_exists('images')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mkdir('images', 0755);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filename = $_FILES['image']['name'];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filepath = 'images\/'. $filename;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0move_uploaded_file($_FILES['image']['tmp_name'], $filepath);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(!file_exists('images\/crop')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mkdir('images\/crop', 0755);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ crop image\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img = Image::make($filepath);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$croppath = 'images\/crop\/'. $filename;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img-&gt;crop($_POST['w'], $_POST['h'], $_POST['x1'], $_POST['y1']);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$img-&gt;save($croppath);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"&lt;img src='\". $croppath .\"' \/&gt;\";\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Se siit\u00e4! Nyt kun testaat kulkua, saat alkuper\u00e4isen ja rajatun version kuvista, jotka on tallennettu vastaavasti kuvien ja rajaettujen hakemistojen alle.<\/p>\n<h3>Aseta kuvan suurin leveys<\/h3>\n<p>Joskus k\u00e4ytt\u00e4j\u00e4 voi haluta m\u00e4\u00e4ritell\u00e4 kuvan rajattaville versioille enimm\u00e4isleveyden. imgAreaSelect tarjoaa useita vaihtoehtoja, kuten kuvasuhde, maxWidth, maxHeight jne., jotta kuvan lopputulos voidaan mukauttaa. K\u00e4ytt\u00e4j\u00e4 voi m\u00e4\u00e4ritt\u00e4\u00e4 kuvan enimm\u00e4isleveyden maxWidth-vaihtoehdon avulla.<\/p>\n<pre><code>$('#previewimage').imgAreaSelect({\n\u00a0\u00a0\u00a0\u00a0maxWidth: '1000', \/\/ this value is in pixels\n\u00a0\u00a0\u00a0\u00a0onSelectEnd: function (img, selection) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('input[name=\"x1\"]').val(selection.x1);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('input[name=\"y1\"]').val(selection.y1);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('input[name=\"w\"]').val(selection.width);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('input[name=\"h\"]').val(selection.height);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n\u00a0\u00a0\u00a0\u00a0}\n});<\/code><\/pre>\n<p>Toivon, ett\u00e4 ymm\u00e4rr\u00e4t kuinka ladata, rajata ja muuttaa kuvan kokoa jQueryn ja PHP: n avulla. Haluaisin tiet\u00e4\u00e4 ajatuksesi alla olevasta kommenttiosasta.<\/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\/kuinka-rekisteroida-mukautetut-kuvakoot-ja-muuttaa-olemassa-olevien-kuvien-kokoa-wordpressissa\/\" title=\"Kuinka rekister\u00f6id\u00e4 mukautetut kuvakoot ja muuttaa olemassa olevien kuvien kokoa WordPressiss\u00e4\">Kuinka rekister\u00f6id\u00e4 mukautetut kuvakoot ja muuttaa olemassa olevien kuvien kokoa WordPressiss\u00e4<\/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 k\u00e4ytt\u00e4m\u00e4ll\u00e4 interventiokuvakirjastoa\">Muuta kuvan kokoa PHP: ss\u00e4 k\u00e4ytt\u00e4m\u00e4ll\u00e4 interventiokuvakirjastoa<\/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 rajata kuvaa? T\u00e4ss\u00e4 artikkelissa tutkitaan kuvan lataamista, rajaamista ja koon muuttamista jQueryn ja PHP: n avulla.<\/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-25063","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\/25063","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=25063"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/25063\/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=25063"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/categories?post=25063"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/tags?post=25063"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}