✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Como fazer upload, recortar e redimensionar imagens usando jQuery e PHP

542

Se você estiver executando um site, convém recortar a imagem em determinados cenários. Digamos que você queira permitir que o usuário recorte suas imagens de perfil antes de fazer o upload. Neste artigo, estudamos como fazer upload, cortar e redimensionar a imagem usando imgAreaSelect e PHP.

Podemos dizer que quando cortamos a imagem, na verdade a estamos redimensionando ajustando com as coordenadas fornecidas da parte cortada.

imgAreaSelect é um plugin jQuery que fornece um recurso para cortar as imagens. É um plugin leve e fácil de usar.

Para começar, você precisa usar o plugin imgAreaSelect e a biblioteca de imagens de intervenção. Usando imgAreaSelect escolhemos a área da imagem que precisa ser cortada e a biblioteca de imagens Internention nos ajuda a armazenar a versão original e copiada de uma imagem no servidor.

Dito isso, vamos dar uma olhada em como fazer upload, cortar e redimensionar a imagem usando jQuery e PHP.

Instalação

Baixe o plugin imgAreaSelect do link fornecido. Para instalação do Interventon Image, recomendo usar o Composer. Execute o comando abaixo no diretório raiz do projeto para instalar a biblioteca de imagens de intervenção.

composer require intervention/image

Quando terminar, certifique-se de que sua estrutura de diretório se pareça com a imagem abaixo.

Como fazer upload, recortar e redimensionar imagens usando jQuery e PHP

Como usar imgAreaSelect

Para usar imgAreaSelect, primeiro precisamos incluir seu arquivo CSS e JS junto com a biblioteca jQuery.

<link rel="stylesheet" href="css/imgareaselect.css"> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="js/jquery.imgareaselect.js"></script>

Em seguida, exigimos um formulário simples onde o usuário pode navegar pela imagem e enviá-la para processamento do lado do servidor.

<form action="crop.php" method="post" enctype="multipart/form-data">     Upload Image: <input type="file" name="image" id="image" />     <input type="hidden" name="x1" value="" />     <input type="hidden" name="y1" value="" />     <input type="hidden" name="w" value="" />     <input type="hidden" name="h" value="" /><br><br>     <input type="submit" name="submit" value="Submit" /> </form>   <p><img id="previewimage" style="display:none;"/></p>

O formulário acima exibirá o botão de entrada e envio do arquivo. Peguei campos ocultos no formulário que precisarão cortar a imagem no lado do servidor. Basicamente, esses campos ocultos enviam coordenadas da imagem para recortá-la.

Quando o usuário navegar na imagem, mostraremos a imagem onde o usuário pode selecionar a área que deseja cortar. O código abaixo permite que o usuário visualize a imagem e escolha uma área da imagem a ser cortada.

<script> jQuery(function($) {       var p = $("#previewimage");     $("body").on("change", "#image", function(){           var imageReader = new FileReader();         imageReader.readAsDataURL(document.getElementById("image").files[0]);               imageReader.onload = function (oFREvent) {             p.attr('src', oFREvent.target.result).fadeIn();         };     });       $('#previewimage').imgAreaSelect({         onSelectEnd: function (img, selection) {             $('input[name="x1"]').val(selection.x1);             $('input[name="y1"]').val(selection.y1);             $('input[name="w"]').val(selection.width);             $('input[name="h"]').val(selection.height);                    }     }); }); </script>

Upload do lado do servidor, corte e redimensionamento de imagem

Após o envio do formulário, ele redireciona para o crop.phparquivo onde carregamos e recortamos a imagem no lado do servidor. Este arquivo aceita entrada de arquivo e coordenadas da imagem para recorte.

Primeiro, vamos incluir o ambiente da biblioteca de Imagens de Intervenção.

<?php require 'vendor/autoload.php';   use InterventionImageImageManagerStatic as Image;

Vou usar um crop()método de biblioteca para criar a versão recortada da imagem original. Os parâmetros da função crop() são largura, altura e coordenadas dos eixos xe y. Você pode ler mais sobre isso em sua documentação.

crop.php

<?php require 'vendor/autoload.php';   use InterventionImageImageManagerStatic as Image;   if(isset($_POST['submit'])) {           if(isset($_FILES['image']['name']) && !empty($_FILES['image']['name'])) {           if(!file_exists('images')) {             mkdir('images', 0755);         }           $filename = $_FILES['image']['name'];         $filepath = 'images/'. $filename;         move_uploaded_file($_FILES['image']['tmp_name'], $filepath);                   if(!file_exists('images/crop')) {             mkdir('images/crop', 0755);         }           // crop image         $img = Image::make($filepath);         $croppath = 'images/crop/'. $filename;           $img->crop($_POST['w'], $_POST['h'], $_POST['x1'], $_POST['y1']);         $img->save($croppath);           echo "<img src='". $croppath ."' />";     } }

É isso! Agora, se você testar o fluxo, obterá a versão original e a versão cortada das imagens armazenadas nos diretórios ‘imagens’ e ‘corte’, respectivamente.

Definir a largura máxima da imagem

Às vezes, o usuário pode querer definir a largura máxima para uma versão recortada de uma imagem. imgAreaSelect fornece várias opções como aspectRatio, maxWidth, maxHeight, etc. para personalizar o resultado final de uma imagem. Um usuário pode usar a opção maxWidth para definir a largura máxima da imagem.

$('#previewimage').imgAreaSelect({     maxWidth: '1000', // this value is in pixels     onSelectEnd: function (img, selection) {         $('input[name="x1"]').val(selection.x1);         $('input[name="y1"]').val(selection.y1);         $('input[name="w"]').val(selection.width);         $('input[name="h"]').val(selection.height);                } });

Espero que você entenda como fazer upload, cortar e redimensionar a imagem usando jQuery e PHP. Eu gostaria de saber sua opinião na seção de comentários abaixo.

Artigos relacionados

Fonte de gravação: artisansweb.net

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação