{"id":28908,"date":"2021-05-30T18:51:00","date_gmt":"2021-05-30T15:51:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28908"},"modified":"2021-10-17T04:30:57","modified_gmt":"2021-10-17T01:30:57","slug":"hur-man-laddar-upp-beskar-och-andrar-storlek-pa-bild-med-jquery-och-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/sv\/hur-man-laddar-upp-beskar-och-andrar-storlek-pa-bild-med-jquery-och-php\/","title":{"rendered":"Hur man laddar upp, besk\u00e4r och \u00e4ndrar storlek p\u00e5 bild med jQuery och PHP"},"content":{"rendered":"<p>Om du driver en webbplats kanske du vill besk\u00e4ra bilden i vissa scenarier. L\u00e5t oss s\u00e4ga att du vill till\u00e5ta anv\u00e4ndaren att besk\u00e4ra sina profilbilder innan de laddas upp. I den h\u00e4r artikeln studerar vi hur du laddar upp, besk\u00e4ra och \u00e4ndra storlek p\u00e5 bilden med imgAreaSelect och PHP.<\/p>\n<p>Vi kan s\u00e4ga att n\u00e4r vi besk\u00e4r bilden \u00e4ndrar vi faktiskt storleken p\u00e5 den genom att justera med de angivna koordinaterna f\u00f6r den beskurna delen.<\/p>\n<p><a href=\"https:\/\/plugins.jquery.com\/imgareaselect\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">imgAreaSelect<\/a> \u00e4r ett jQuery-plugin som ger en funktion f\u00f6r att besk\u00e4ra bilderna. Det \u00e4r ett l\u00e4tt plugin och l\u00e4tt att anv\u00e4nda.<\/p>\n<p>F\u00f6r att komma ig\u00e5ng m\u00e5ste du anv\u00e4nda imgAreaSelect plugin och <a href=\"http:\/\/image.intervention.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Intervention Image<\/a> Library. Med imgAreaSelect v\u00e4ljer vi det bildomr\u00e5de som beh\u00f6ver besk\u00e4ras och Internention Image-biblioteket hj\u00e4lper oss att lagra den ursprungliga och kopierade versionen av en bild p\u00e5 servern.<\/p>\n<p>Med detta sagt, l\u00e5t oss ta en titt p\u00e5 hur du laddar upp, besk\u00e4r och \u00e4ndrar storlek p\u00e5 bilden med jQuery och PHP.<\/p>\n<h3>Installation<\/h3>\n<p>Ladda ner <a href=\"https:\/\/plugins.jquery.com\/imgareaselect\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">imgAreaSelect-<\/a> plugin fr\u00e5n den givna l\u00e4nken. F\u00f6r installation av Interventon Image rekommenderar jag att jag anv\u00e4nder <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a>. K\u00f6r kommandot nedan i projektets rotkatalog f\u00f6r att installera Intervention Image-biblioteket.<\/p>\n<pre><code>composer require intervention\/image<\/code><\/pre>\n<p>N\u00e4r du \u00e4r klar ser du till att din katalogstruktur ser ut som en sk\u00e4rmdump nedan.<\/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=\"Hur man laddar upp, besk\u00e4r och \u00e4ndrar storlek p\u00e5 bild med jQuery och PHP\" ><\/a><\/p>\n<h3>Hur man anv\u00e4nder imgAreaSelect<\/h3>\n<p>F\u00f6r att kunna anv\u00e4nda imgAreaSelect m\u00e5ste vi f\u00f6rst inkludera deras CSS- och JS-fil tillsammans med jQuery-biblioteket.<\/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>D\u00e4refter kr\u00e4ver vi ett enkelt formul\u00e4r d\u00e4r anv\u00e4ndaren kan bl\u00e4ddra i bilden och skicka den f\u00f6r serverbearbetning.<\/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>Ovanst\u00e5ende formul\u00e4r visar knappen f\u00f6r inmatning av filer och skicka. Jag har tagit dolda f\u00e4lt i formen som kommer att beh\u00f6va besk\u00e4ra bilden p\u00e5 serversidan. I grund och botten skickar dessa dolda f\u00e4lt koordinater f\u00f6r bilden f\u00f6r att besk\u00e4ra den.<\/p>\n<p>N\u00e4r anv\u00e4ndaren bl\u00e4ddrar i bilden, visar vi bilden d\u00e4r en anv\u00e4ndare kan v\u00e4lja det omr\u00e5de som de beh\u00f6ver besk\u00e4ra. Koden nedan g\u00f6r det m\u00f6jligt f\u00f6r anv\u00e4ndaren att f\u00f6rhandsgranska bilden och v\u00e4lja ett omr\u00e5de p\u00e5 bilden som ska besk\u00e4ras.<\/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>\u00d6verf\u00f6r, besk\u00e4r och \u00e4ndra storlek p\u00e5 bild p\u00e5 serversidan<\/h3>\n<p>Vid inl\u00e4mning av formul\u00e4ret omdirigeras det till <code>crop.php<\/code>filen d\u00e4r vi laddar upp och besk\u00e4r bilden p\u00e5 serversidan. Den h\u00e4r filen accepterar filinmatning och koordinater f\u00f6r bilden f\u00f6r besk\u00e4rning.<\/p>\n<p>L\u00e5t oss f\u00f6rst inkludera milj\u00f6n i Intervention Image-biblioteket.<\/p>\n<pre><code>&lt;?php\nrequire 'vendor\/autoload.php';\n\u00a0\nuse InterventionImageImageManagerStatic as Image;<\/code><\/pre>\n<p>Jag ska anv\u00e4nda en <code>crop()<\/code>metod f\u00f6r ett bibliotek f\u00f6r att skapa den beskurna versionen av originalbilden. Parametrar f\u00f6r funktionen crop() \u00e4r bredd, h\u00f6jd och koordinater f\u00f6r x-axeln och y-axeln. Du kan l\u00e4sa mer om det i deras <a href=\"https:\/\/image.intervention.io\/api\/crop\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentation<\/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>Det \u00e4r allt! Nu om du testar fl\u00f6det f\u00e5r du den ursprungliga och beskurna versionen av bilderna lagrade under katalogerna &#8217;bilder&#8217; respektive &#8217;besk\u00e4rning&#8217;.<\/p>\n<h3>St\u00e4ll in maximal bredd p\u00e5 bilden<\/h3>\n<p>Ibland kanske anv\u00e4ndaren vill definiera maximal bredd f\u00f6r beskurna versioner av en bild. imgAreaSelect erbjuder flera alternativ som aspectRatio, maxWidth, maxHeight, etc. f\u00f6r att anpassa det slutliga resultatet av en bild. En anv\u00e4ndare kan anv\u00e4nda alternativet maxWidth f\u00f6r att st\u00e4lla in maximal bredd f\u00f6r bilden.<\/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>Jag hoppas att du f\u00f6rst\u00e5r hur du laddar upp, besk\u00e4ra och \u00e4ndra storlek p\u00e5 bilden med jQuery och PHP. Jag skulle vilja veta dina tankar i kommentarf\u00e4ltet nedan.<\/p>\n<h4>relaterade artiklar<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/andra-storlek-pa-bild-i-laravel-med-hjalp-av-interventionsbildbibliotek\/\" title=\"\u00c4ndra storlek p\u00e5 bild i Laravel med hj\u00e4lp av interventionsbildbibliotek\">\u00c4ndra storlek p\u00e5 bild i Laravel med hj\u00e4lp av interventionsbildbibliotek<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/sa-har-registrerar-du-anpassade-bildstorlekar-och-andrar-storlek-pa-befintliga-bilder-i-wordpress\/\" title=\"Hur man registrerar anpassade bildstorlekar och \u00e4ndrar storlek p\u00e5 befintliga bilder i WordPress\">Hur man registrerar anpassade bildstorlekar och \u00e4ndrar storlek p\u00e5 befintliga bilder i WordPress<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/andra-storlek-pa-bild-i-php-med-hjalp-av-interventionsbildbibliotek\/\" title=\"\u00c4ndra storlek p\u00e5 bild i PHP med hj\u00e4lp av interventionsbildbibliotek\">\u00c4ndra storlek p\u00e5 bild i PHP med hj\u00e4lp av interventionsbildbibliotek<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vill du ladda upp och besk\u00e4ra bilden? I den h\u00e4r artikeln studerar vi hur man laddar upp, besk\u00e4r och \u00e4ndrar storlek p\u00e5 bilder med jQuery och PHP.<\/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":[279],"tags":[850],"class_list":["post-28908","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-10","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/28908","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/comments?post=28908"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/28908\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media\/21621"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media?parent=28908"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/categories?post=28908"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/tags?post=28908"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}