{"id":25500,"date":"2021-05-30T19:03:00","date_gmt":"2021-05-30T16:03:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25500"},"modified":"2021-10-17T18:35:32","modified_gmt":"2021-10-17T15:35:32","slug":"pildi-uleslaadimine-karpimine-ja-suuruse-muutmine-jquery-ja-php-abil","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/et\/pildi-uleslaadimine-karpimine-ja-suuruse-muutmine-jquery-ja-php-abil\/","title":{"rendered":"Pildi \u00fcleslaadimine, k\u00e4rpimine ja suuruse muutmine jQuery ja PHP abil"},"content":{"rendered":"<p>Kui teil on veebileht, v\u00f5iksite teatud stsenaariumide korral pilti k\u00e4rpida. Oletame, et soovite lubada kasutajal oma profiilipilte enne \u00fcleslaadimist k\u00e4rpida. Selles artiklis uurime, kuidas pilti imgAreaSelect ja PHP abil \u00fcles laadida, k\u00e4rpida ja suurust muuta.<\/p>\n<p>V\u00f5ime \u00f6elda, et pilti k\u00e4rpides muudame selle suurust, kohandades seda k\u00e4rbitud osa esitatud koordinaatidega.<\/p>\n<p><a href=\"https:\/\/plugins.jquery.com\/imgareaselect\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">imgAreaSelect<\/a> on jQuery pistikprogramm, mis pakub funktsiooni piltide k\u00e4rpimiseks. See on kerge pistikprogramm ja seda on lihtne kasutada.<\/p>\n<p>Alustamiseks peate kasutama pistikprogrammi imgAreaSelect ja <a href=\"http:\/\/image.intervention.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sekkumispildi<\/a> teeki. Kasutades rakendust imgAreaSelect, valime pildipiirkonna, mida tuleb k\u00e4rpida, ja Internention Image Library aitab meil serverisse salvestada pildi algse ja k\u00e4rbitud versiooni.<\/p>\n<p>Olles seda \u00f6elnud, vaatame pilti, kuidas pilti \u00fcles laadida, k\u00e4rpida ja suurust muuta jQuery ja PHP abil.<\/p>\n<h3>Paigaldamine<\/h3>\n<p>Antud lingilt <a href=\"https:\/\/plugins.jquery.com\/imgareaselect\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">laadige<\/a> alla pistikprogramm <a href=\"https:\/\/plugins.jquery.com\/imgareaselect\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">imgAreaSelect<\/a>. Interventon Image installimiseks soovitan kasutada <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composerit<\/a>. Sekkumispildi teegi installimiseks k\u00e4ivitage projekti juurkataloogis j\u00e4rgmine k\u00e4sk.<\/p>\n<pre><code>composer require intervention\/image<\/code><\/pre>\n<p>Kui olete valmis, veenduge, et teie kataloogistruktuur n\u00e4eks v\u00e4lja nagu allpool olev ekraanipilt.<\/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=\"Pildi \u00fcleslaadimine, k\u00e4rpimine ja suuruse muutmine jQuery ja PHP abil\" ><\/a><\/p>\n<h3>Kuidas kasutada imgAreaSelect<\/h3>\n<p>ImgAreaSelecti kasutamiseks peame k\u00f5igepealt lisama nende CSS- ja JS-faili koos jQuery teegiga.<\/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>J\u00e4rgmiseks vajame lihtsat vormi, kus kasutaja saab pilti sirvida ja serveripoolseks t\u00f6\u00f6tlemiseks esitada.<\/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>\u00dclaltoodud vormil kuvatakse faili sisestamise ja esitamise nupp. Olen v\u00f5tnud sellisel kujul peidetud v\u00e4ljad, mis peavad serveri poolel pilti k\u00e4rpima. P\u00f5him\u00f5tteliselt saadavad need varjatud v\u00e4ljad pildi k\u00e4rpimiseks koordinaadid.<\/p>\n<p>Kui kasutaja sirvib pilti, n\u00e4itame pilti, kus kasutaja saab valida ala, mida tal on vaja k\u00e4rpida. Allolev kood v\u00f5imaldab kasutajal pilti eelvaadet vaadata ja valida pildi ala, mida k\u00e4rpida.<\/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>Serveripoolne pildi \u00fcleslaadimine, k\u00e4rpimine ja suuruse muutmine<\/h3>\n<p>Vormi esitamisel suunatakse see <code>crop.php<\/code>faili, kuhu me serveri poolse pildi \u00fcles laadime ja k\u00e4rpime. See fail aktsepteerib k\u00e4rpimiseks faili sisendit ja pildi koordinaate.<\/p>\n<p>K\u00f5igepealt lisame sekkumispildi teegi keskkonna.<\/p>\n<pre><code>&lt;?php\nrequire 'vendor\/autoload.php';\n\u00a0\nuse InterventionImageImageManagerStatic as Image;<\/code><\/pre>\n<p><code>crop()<\/code>Algse pildi k\u00e4rbitud versiooni loomiseks kasutan teegi meetodit. K\u00e4rpimise() funktsiooni parameetrid on x-telje ja y-telje laius, k\u00f5rgus ning koordinaadid. V\u00f5ite selle kohta rohkem lugeda nende <a href=\"https:\/\/image.intervention.io\/api\/crop\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentatsioonist<\/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>See selleks! N\u00fc\u00fcd, kui katsetate voogu, saate kataloogide &#8217;images&#8217; ja &#8216;crop&#8217; alla salvestatud piltide originaalse ja k\u00e4rbitud versiooni.<\/p>\n<h3>M\u00e4\u00e4ra pildil maksimaalne laius<\/h3>\n<p>M\u00f5nikord v\u00f5ib kasutaja soovida m\u00e4\u00e4ratleda pildi k\u00e4rbitud versioonide maksimaalne laius. imgAreaSelect pakub pildi l\u00f5pptulemuse kohandamiseks mitmeid v\u00f5imalusi, nagu aspektRatio, maxWidth, maxHeight jne. Kasutaja saab pildi maksimaalse laiuse m\u00e4\u00e4ramiseks kasutada valikut maxWidth.<\/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>Loodan, et m\u00f5istate, kuidas pilti \u00fcles laadida, k\u00e4rpida ja suurust muuta jQuery ja PHP abil. Tahaksin teada teie m\u00f5tteid allpool olevas kommentaaride jaotises.<\/p>\n<h4>seotud artiklid<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/laraveli-pildi-suuruse-muutmine-kasutades-sekkumise-pildikogu\/\" title=\"Laraveli pildi suuruse muutmine, kasutades sekkumise pildikogu\">Laraveli pildi suuruse muutmine, kasutades sekkumise pildikogu<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/kohandatud-pildisuuruste-registreerimine-ja-olemasolevate-piltide-suuruse-muutmine-wordpressis\/\" title=\"Kohandatud pildisuuruste registreerimine ja olemasolevate piltide suuruse muutmine WordPressis\">Kohandatud pildisuuruste registreerimine ja olemasolevate piltide suuruse muutmine WordPressis<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/php-s-saate-pildi-suurust-muuta-kasutades-sekkumispiltide-kogu\/\" title=\"PHP-s pildi suuruse muutmine, kasutades sekkumise pilditeeki\">PHP-s pildi suuruse muutmine, kasutades sekkumise pilditeeki<\/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 pilti \u00fcles laadida ja k\u00e4rpida? Selles artiklis uurime, kuidas jQuery ja PHP abil pilti \u00fcles laadida, k\u00e4rpida ja suurust muuta.<\/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":[274],"tags":[842],"class_list":["post-25500","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\/25500","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=25500"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/25500\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media\/21621"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media?parent=25500"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/categories?post=25500"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/tags?post=25500"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}