{"id":25370,"date":"2021-05-30T18:22:00","date_gmt":"2021-05-30T15:22:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25370"},"modified":"2021-10-18T03:07:00","modified_gmt":"2021-10-18T00:07:00","slug":"come-caricare-ritagliare-e-ridimensionare-l-immagine-utilizzando-jquery-e-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/it\/come-caricare-ritagliare-e-ridimensionare-l-immagine-utilizzando-jquery-e-php\/","title":{"rendered":"Come caricare, ritagliare e ridimensionare l&#8217;immagine utilizzando jQuery e PHP"},"content":{"rendered":"<p>Se stai eseguendo un sito web, potresti voler ritagliare l&#8217;immagine in determinati scenari. Supponiamo che tu voglia consentire all&#8217;utente di ritagliare le immagini del profilo prima del caricamento. In questo articolo, studiamo come caricare, ritagliare e ridimensionare l&#8217;immagine utilizzando imgAreaSelect e PHP.<\/p>\n<p>Possiamo dire che quando ritagliamo l&#8217;immagine, la stiamo effettivamente ridimensionando regolandola con le coordinate fornite della parte ritagliata.<\/p>\n<p><a href=\"https:\/\/plugins.jquery.com\/imgareaselect\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">imgAreaSelect<\/a> \u00e8 un plugin jQuery che fornisce una funzionalit\u00e0 per ritagliare le immagini. \u00c8 un plugin leggero e facile da usare.<\/p>\n<p>Per iniziare, \u00e8 necessario utilizzare il plug-in imgAreaSelect e la libreria di <a href=\"http:\/\/image.intervention.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">immagini di intervento<\/a>. Usando imgAreaSelect scegliamo l&#8217;area dell&#8217;immagine che deve essere ritagliata e la libreria di immagini di Internetntion ci aiuta a memorizzare la versione originale e copiata di un&#8217;immagine sul server.<\/p>\n<p>Detto questo, diamo un&#8217;occhiata a come caricare, ritagliare e ridimensionare l&#8217;immagine utilizzando jQuery e PHP.<\/p>\n<h3>Installazione<\/h3>\n<p>Scarica il plugin <a href=\"https:\/\/plugins.jquery.com\/imgareaselect\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">imgAreaSelect<\/a> dal link indicato. Per l&#8217;installazione di Interventon Image, consiglio di utilizzare <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a>. Eseguire il comando seguente nella directory principale del progetto per installare la libreria di immagini di intervento.<\/p>\n<pre><code>composer require intervention\/image<\/code><\/pre>\n<p>Quando hai finito assicurati che la struttura della tua directory assomigli a uno screenshot qui sotto.<\/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=\"Come caricare, ritagliare e ridimensionare l&#039;immagine utilizzando jQuery e PHP\" ><\/a><\/p>\n<h3>Come usare imgAreaSelect<\/h3>\n<p>Per utilizzare imgAreaSelect, dobbiamo prima includere il loro file CSS e JS insieme alla libreria jQuery.<\/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>Successivamente, abbiamo bisogno di un semplice modulo in cui l&#8217;utente pu\u00f2 sfogliare l&#8217;immagine e inviarla per l&#8217;elaborazione lato server.<\/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>Il modulo sopra mostrer\u00e0 l&#8217;input del file e il pulsante di invio. Ho preso i campi nascosti nel modulo che dovr\u00e0 ritagliare l&#8217;immagine sul lato server. Fondamentalmente, questi campi nascosti inviano le coordinate dell&#8217;immagine per ritagliarla.<\/p>\n<p>Quando l&#8217;utente sfoglia l&#8217;immagine, mostreremo l&#8217;immagine in cui un utente pu\u00f2 selezionare l&#8217;area che deve ritagliare. Il codice seguente consente all&#8217;utente di visualizzare in anteprima l&#8217;immagine e scegliere un&#8217;area dell&#8217;immagine da ritagliare.<\/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>Caricamento, ritaglio e ridimensionamento sul lato server dell&#8217;immagine<\/h3>\n<p>Al momento dell&#8217;invio del modulo, reindirizza al <code>crop.php<\/code>file in cui carichiamo e ritagliamo l&#8217;immagine sul lato server. Questo file accetta l&#8217;input del file e le coordinate dell&#8217;immagine per il ritaglio.<\/p>\n<p>Innanzitutto, includiamo l&#8217;ambiente della libreria Intervention Image.<\/p>\n<pre><code>&lt;?php\nrequire 'vendor\/autoload.php';\n\u00a0\nuse InterventionImageImageManagerStatic as Image;<\/code><\/pre>\n<p>User\u00f2 un <code>crop()<\/code>metodo di una libreria per creare la versione ritagliata dell&#8217;immagine originale. I parametri per la funzione crop() sono larghezza, altezza e coordinate dell&#8217;asse x e dell&#8217;asse y. Puoi leggere di pi\u00f9 a riguardo sulla loro <a href=\"https:\/\/image.intervention.io\/api\/crop\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documentazione<\/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>Questo \u00e8 tutto! Ora, se provi il flusso, otterrai la versione originale e ritagliata delle immagini archiviate rispettivamente nelle directory &quot;images&quot; e &quot;crop&quot;.<\/p>\n<h3>Imposta la larghezza massima sull&#8217;immagine<\/h3>\n<p>A volte, l&#8217;utente potrebbe voler definire la larghezza massima per le versioni ritagliate di un&#8217;immagine. imgAreaSelect fornisce diverse opzioni come aspectRatio, maxWidth, maxHeight, ecc. per personalizzare il risultato finale di un&#8217;immagine. Un utente pu\u00f2 utilizzare l&#8217;opzione maxWidth per impostare la larghezza massima per l&#8217;immagine.<\/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>Spero che tu capisca come caricare, ritagliare e ridimensionare l&#8217;immagine usando jQuery e PHP. Mi piacerebbe conoscere i tuoi pensieri nella sezione commenti qui sotto.<\/p>\n<h4>articoli Correlati<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/ridimensiona-l-immagine-in-laravel-usando-la-libreria-di-immagini-di-intervento\/\" title=\"Ridimensiona l&#039;immagine in Laravel usando la libreria di immagini di intervento\">Ridimensiona l&#8217;immagine in Laravel usando la libreria di immagini di intervento<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/come-registrare-le-dimensioni-delle-immagini-personalizzate-e-ridimensionare-le-immagini-esistenti-in-wordpress\/\" title=\"Come registrare le dimensioni delle immagini personalizzate e ridimensionare le immagini esistenti in WordPress\">Come registrare le dimensioni delle immagini personalizzate e ridimensionare le immagini esistenti in WordPress<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/ridimensiona-l-immagine-in-php-usando-la-libreria-di-immagini-di-intervento\/\" title=\"Ridimensiona l&#039;immagine in PHP usando la libreria di immagini di intervento\">Ridimensiona l&#8217;immagine in PHP usando la libreria di immagini di intervento<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Stai cercando di caricare e ritagliare l&#8217;immagine? In questo articolo, studiamo come caricare, ritagliare e ridimensionare l&#8217;immagine utilizzando jQuery e 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":[276],"tags":[846],"class_list":["post-25370","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-7","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/25370","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/comments?post=25370"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/25370\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media\/21621"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media?parent=25370"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/categories?post=25370"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/tags?post=25370"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}