{"id":25071,"date":"2021-05-30T18:47:00","date_gmt":"2021-05-30T15:47:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25071"},"modified":"2021-10-18T02:10:21","modified_gmt":"2021-10-17T23:10:21","slug":"comment-telecharger-recadrer-et-redimensionner-une-image-a-l-aide-de-jquery-et-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fr\/comment-telecharger-recadrer-et-redimensionner-une-image-a-l-aide-de-jquery-et-php\/","title":{"rendered":"Comment t\u00e9l\u00e9charger, recadrer et redimensionner une image \u00e0 l&rsquo;aide de jQuery et PHP"},"content":{"rendered":"<p>Si vous ex\u00e9cutez un site Web, vous souhaiterez peut-\u00eatre recadrer l&rsquo;image dans certains sc\u00e9narios. Supposons que vous souhaitiez autoriser l&rsquo;utilisateur \u00e0 recadrer ses images de profil avant le t\u00e9l\u00e9chargement. Dans cet article, nous \u00e9tudions comment t\u00e9l\u00e9charger, recadrer et redimensionner l&rsquo;image en utilisant imgAreaSelect et PHP.<\/p>\n<p>Nous pouvons dire que lorsque nous recadrons l&rsquo;image, nous la redimensionnons en fait en l&rsquo;ajustant avec les coordonn\u00e9es fournies de la partie recadr\u00e9e.<\/p>\n<p><a href=\"https:\/\/plugins.jquery.com\/imgareaselect\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">imgAreaSelect<\/a> est un plugin jQuery qui fournit une fonctionnalit\u00e9 pour recadrer les images. C&rsquo;est un plugin l\u00e9ger et facile \u00e0 utiliser.<\/p>\n<p>Pour commencer, vous devez utiliser le plugin imgAreaSelect et la biblioth\u00e8que d&rsquo; <a href=\"http:\/\/image.intervention.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">images d&rsquo;intervention<\/a>. En utilisant imgAreaSelect, nous choisissons la zone d&rsquo;image qui doit \u00eatre recadr\u00e9e et la biblioth\u00e8que d&rsquo;images Internention nous aide \u00e0 stocker la version originale et copi\u00e9e d&rsquo;une image sur le serveur.<\/p>\n<p>Cela dit, examinons comment t\u00e9l\u00e9charger, recadrer et redimensionner l&rsquo;image \u00e0 l&rsquo;aide de jQuery et PHP.<\/p>\n<h3>Installation<\/h3>\n<p>T\u00e9l\u00e9chargez le plugin <a href=\"https:\/\/plugins.jquery.com\/imgareaselect\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">imgAreaSelect \u00e0<\/a> partir du lien donn\u00e9. Pour l&rsquo;installation d&rsquo;Interventon Image, je recommande d&rsquo;utiliser <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a>. Ex\u00e9cutez la commande ci-dessous dans le r\u00e9pertoire racine du projet pour installer la biblioth\u00e8que d&rsquo;images d&rsquo;intervention.<\/p>\n<pre><code>composer require intervention\/image<\/code><\/pre>\n<p>Lorsque vous avez termin\u00e9, assurez-vous que la structure de votre r\u00e9pertoire ressemble \u00e0 une capture d&rsquo;\u00e9cran ci-dessous.<\/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=\"Comment t\u00e9l\u00e9charger, recadrer et redimensionner une image \u00e0 l&#039;aide de jQuery et PHP\" ><\/a><\/p>\n<h3>Comment utiliser imgAreaSelect<\/h3>\n<p>Pour utiliser imgAreaSelect, nous devons d&rsquo;abord inclure leurs fichiers CSS et JS avec la biblioth\u00e8que 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>Ensuite, nous avons besoin d&rsquo;un formulaire simple o\u00f9 l&rsquo;utilisateur peut parcourir l&rsquo;image et la soumettre pour un traitement c\u00f4t\u00e9 serveur.<\/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>Le formulaire ci-dessus affichera le bouton de saisie et de soumission du fichier. J&rsquo;ai pris des champs cach\u00e9s dans le formulaire qui devront recadrer l&rsquo;image c\u00f4t\u00e9 serveur. Fondamentalement, ces champs cach\u00e9s envoient les coordonn\u00e9es de l&rsquo;image pour la recadrer.<\/p>\n<p>Lorsque l&rsquo;utilisateur parcourt l&rsquo;image, nous montrerons l&rsquo;image o\u00f9 un utilisateur peut s\u00e9lectionner la zone qu&rsquo;il doit recadrer. Le code ci-dessous permet \u00e0 l&rsquo;utilisateur de pr\u00e9visualiser l&rsquo;image et de choisir une zone de l&rsquo;image \u00e0 recadrer.<\/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>T\u00e9l\u00e9chargement, recadrage et redimensionnement de l&rsquo;image c\u00f4t\u00e9 serveur<\/h3>\n<p>Lors de la soumission du formulaire, il redirige vers le <code>crop.php<\/code>fichier o\u00f9 nous t\u00e9l\u00e9chargeons et recadrons l&rsquo;image c\u00f4t\u00e9 serveur. Ce fichier accepte l&rsquo;entr\u00e9e de fichier et les coordonn\u00e9es de l&rsquo;image pour le recadrage.<\/p>\n<p>Tout d&rsquo;abord, incluons l&rsquo;environnement de la biblioth\u00e8que d&rsquo;images d&rsquo;intervention.<\/p>\n<pre><code>&lt;?php\nrequire 'vendor\/autoload.php';\n\u00a0\nuse InterventionImageImageManagerStatic as Image;<\/code><\/pre>\n<p>Je vais utiliser une <code>crop()<\/code>m\u00e9thode de biblioth\u00e8que pour cr\u00e9er la version recadr\u00e9e de l&rsquo;image originale. Les param\u00e8tres de la fonction crop() sont la largeur, la hauteur et les coordonn\u00e9es des axes x et y. Vous pouvez en savoir plus \u00e0 ce sujet sur leur <a href=\"https:\/\/image.intervention.io\/api\/crop\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documentation<\/a>.<\/p>\n<p><strong>recadrer.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>C&rsquo;est \u00e7a! Maintenant, si vous testez le flux, vous obtiendrez la version originale et recadr\u00e9e des images stock\u00e9es respectivement dans les r\u00e9pertoires &lsquo;images&rsquo; et &lsquo;crop&rsquo;.<\/p>\n<h3>D\u00e9finir la largeur maximale sur l&rsquo;image<\/h3>\n<p>Parfois, l&rsquo;utilisateur peut vouloir d\u00e9finir la largeur maximale d&rsquo;une version recadr\u00e9e d&rsquo;une image. imgAreaSelect fournit plusieurs options comme aspectRatio, maxWidth, maxHeight, etc. pour personnaliser le r\u00e9sultat final d&rsquo;une image. Un utilisateur peut utiliser l&rsquo;option maxWidth pour d\u00e9finir la largeur maximale de l&rsquo;image.<\/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>J&rsquo;esp\u00e8re que vous comprenez comment t\u00e9l\u00e9charger, recadrer et redimensionner l&rsquo;image \u00e0 l&rsquo;aide de jQuery et PHP. J&rsquo;aimerais conna\u00eetre votre opinion dans la section des commentaires ci-dessous.<\/p>\n<h4>Articles Li\u00e9s<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/redimensionner-l-image-dans-laravel-a-l-aide-de-la-bibliotheque-d-images-d-intervention\/\" title=\"Redimensionner l&#039;image dans Laravel \u00e0 l&#039;aide de la biblioth\u00e8que d&#039;images d&#039;intervention\">Redimensionner l&rsquo;image dans Laravel \u00e0 l&rsquo;aide de la biblioth\u00e8que d&rsquo;images d&rsquo;intervention<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-enregistrer-des-tailles-d-image-personnalisees-et-redimensionner-des-images-existantes-dans-wordpress\/\" title=\"Comment enregistrer des tailles d&#039;image personnalis\u00e9es et redimensionner des images existantes dans WordPress\">Comment enregistrer des tailles d&rsquo;image personnalis\u00e9es et redimensionner des images existantes dans WordPress<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/redimensionner-l-image-en-php-a-l-aide-de-la-bibliotheque-d-images-d-intervention\/\" title=\"Redimensionner l&#039;image en PHP \u00e0 l&#039;aide de la biblioth\u00e8que d&#039;images d&#039;intervention\">Redimensionner l&rsquo;image en PHP \u00e0 l&rsquo;aide de la biblioth\u00e8que d&rsquo;images d&rsquo;intervention<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vous cherchez \u00e0 t\u00e9l\u00e9charger et recadrer l&rsquo;image ? Dans cet article, nous \u00e9tudions comment t\u00e9l\u00e9charger, recadrer et redimensionner une image \u00e0 l&rsquo;aide de jQuery et 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":[273],"tags":[844],"class_list":["post-25071","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-4","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/25071","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/comments?post=25071"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/25071\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media\/21621"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media?parent=25071"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/categories?post=25071"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/tags?post=25071"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}