Jump to content
Camilavip

Redimensionar foto no upload

Recommended Posts

Oi, já coloquei aqui esse código, ele faz o upload da imagem, grava a foto na pasta e o caminho no banco de dados, porém eu queria ver se alguém consegue ver para mim se antes de fazer isso ele consiga redimensionar a imagem.Vi algumas soluções de GD, mas não sei como integrar.

<?php
// Conexão com o banco de dados
include "conexao.php";

// pegar a id do cliente na url (se existir)
$id_cliente = isset($_GET['id']) ? $_GET['id'] : null;
$fotoNova = null;

// se algo for postado, e existir a id do cliente
if (sizeof($_POST) && $id_cliente) {

   $foto = $_FILES['foto'];
   // Se a foto estiver sido selecionada
   if (!empty($foto['name'])) {

      // Largura máxima em pixels
      $largura = 700;
      // Altura máxima em pixels
      $altura = 1000;
      // Tamanho máximo do arquivo em bytes
      $tamanho = 1000;

      // Verifica se o arquivo é uma imagem
      if (preg_match("/^image\/(pjpeg|jpeg|png|gif|bmp)$/", $foto['type'])) {
         $error[1] = "Isso não é uma imagem.";
      }

      // Pega as dimensões da imagem
      $dimensoes = getimagesize($foto['tmp_name']);

      // Verifica se a largura da imagem é maior que a largura permitida
      if ($dimensoes[0] > $largura) {
         $error[2] = "A largura da imagem não deve ultrapassar " . $largura . " pixels";
      }

      // Verifica se a altura da imagem é maior que a altura permitida
      if ($dimensoes[1] > $altura) {
         $error[3] = "Altura da imagem não deve ultrapassar " . $altura . " pixels";
      } {

         // Pega extensão da imagem
         preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $foto['name'], $ext);

         // Gera um nome único para a imagem
         $nome_imagem = md5(uniqid(time())) . "." . $ext[1];

         // Caminho de onde ficará a imagem
         $caminho_imagem = "fotos/" . $nome_imagem;
		 
		 // Tentando apagar a foto anterior da pasta
		 unlink("fotos/".$nome_imagem->foto."");

         // Faz o upload da imagem para seu respectivo caminho
         move_uploaded_file($foto['tmp_name'], $caminho_imagem);
      }
   }
     
$result = $sqli->query("SELECT foto FROM clientes WHERE id_cliente =". intval($id_cliente));
$obj = $result->fetch_object();
$path =  'fotos/'. $obj->foto;
   
// atualiza os dados no banco
$sql = $sqli->query("UPDATE clientes SET foto = '{$nome_imagem}' WHERE id_cliente =". intval($id_cliente));
// Se os dados forem inseridos com sucesso

 
   if ($sqli->error) {
      echo "<p>Erro ao atualizar.</p>" . $sqli->error;
   } else {
	   
	  if (file_exists($path)) {
		unlink($path);
	} 
	   
	   
      // vai forçar o recarregamento da imagem nova
      $fotoNova = '?' . microtime(true);
   }
}
?>

Abaixo apenas o restando do código que faz o upload, então é acima que preciso isso.

<!doctype html>
<html>
   <head>
      <meta charset='utf-8'>
      <title>CLIENTES</title>
      <link href="css/estilo.css" rel="stylesheet" type="text/css">
   </head>
   <body>
      <form id="atualizar" method="post" enctype="multipart/form-data" onsubmit="return validaCampo(); return false;" >
         <?php
         // Seleciona apenas a foto do cliente id = $id_cliente
         $result = $sqli->query("SELECT foto FROM clientes WHERE id_cliente=$id_cliente");
         if ($sqli->error) {
            die($sqli->error);
         } else {
            // Exibe as informações de cada usuário
            while ($nome = $result->fetch_assoc()) {
               // Exibimos a foto
               if (empty($nome['foto'])) {
                  echo "<img src='fotos/sem_foto.jpg' width='135' height='180'>";
               } else {
                  echo "<img src='fotos/" . $nome['foto'] . "$fotoNova' alt='Foto de exibição' width='145' height='180'><br>";
               }
               // Exibimos o nome e email..continua o resto do codigo aqui
            }
         }
         ?>    
         <input type="file" name="foto" accept="image/*"><br><br>
         <input type="hidden" name="enviar" value="1">
         <input type="submit" name="atualizar" value="Enviar" />
      </form>
   </body>
</html>

 

Achei esse código abaixo, mas nem faço ideia de como integrar a primeira parte do código que postei

 

function image_resize($file_name, $width, $height, $crop=FALSE) {
   list($wid, $ht) = getimagesize($file_name);
   $r = $wid / $ht;
   if ($crop) {
      if ($wid > $ht) {
         $wid = ceil($wid-($width*abs($r-$width/$height)));
      } else {
         $ht = ceil($ht-($ht*abs($r-$w/$h)));
      }
      $new_width = $width;
      $new_height = $height;
   } else {
      if ($width/$height > $r) {
         $new_width = $height*$r;
         $new_height = $height;
      } else {
         $new_height = $width/$r;
         $new_width = $width;
      }
   }
   $source = imagecreatefromjpeg($file_name);
   $dst = imagecreatetruecolor($new_width, $new_height);
   image_copy_resampled($dst, $source, 0, 0, 0, 0, $new_width, $new_height, $wid, $ht);
   return $dst;
}
$img_to_resize = image_resize(‘path-to-jpg-image’, 250, 250);

 

Share this post


Link to post
Share on other sites

Achei esse código, faz tudo direitinho, mas não sei como integrar no meu.

<form method="POST" action="redimensionar.php" enctype="multipart/form-data">
	<label>Imagem: </label>
	<input type="file" name="arquivo"><br><br>
	<input type="submit" value="Cadastrar">
</form>

E o arquivo redimensionar.php

<?php
	$altura = "200";
	$largura = "200";
	echo "Altura pretendida: $altura - largura pretendida: $largura <br>";
	
	switch($_FILES['arquivo']['type']):
		case 'image/jpeg';
		case 'image/pjpeg';
			$imagem_temporaria = imagecreatefromjpeg($_FILES['arquivo']['tmp_name']);
			
			$largura_original = imagesx($imagem_temporaria);
			
			$altura_original = imagesy($imagem_temporaria);
			
			echo "largura original: $largura_original - Altura original: $altura_original <br>";

			/* Configura a nova largura */
			$nova_largura = $largura ? $largura : floor (($largura_original / $altura_original) * $altura);

			/* Configura a nova altura */
			$nova_altura = $altura ? $altura : floor (($altura_original / $largura_original) * $largura);

			/* Retorna a nova imagem criada */
			$imagem_redimensionada = imagecreatetruecolor($nova_largura, $nova_altura);
         
            /* Copia a nova imagem da imagem antiga com o tamanho correto */
			//imagealphablending($imagem_redimensionada, false);
			//imagesavealpha($imagem_redimensionada, true);
			imagecopyresampled($imagem_redimensionada, $imagem_temporaria, 0, 0, 0, 0, $nova_largura, $nova_altura,              $largura_original, $altura_original);

	        //função imagejpeg que envia para o browser a imagem armazenada no parâmetro passado		
			imagejpeg($imagem_redimensionada, 'arquivo/' . $_FILES['arquivo']['name']);
			
			echo "<img src='arquivo/".$_FILES['arquivo']['name']."'>";
			
		break;
	endswitch;
?>

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Caio Vargas
      Boa tarde pessoal blz ?
      Estou com uma dúvida sobre implementação do checkout transparente do mercado pago 
       
      Alguém já fez essa implementação eu estou com dúvida sobre a documentação que não estou conseguindo intender 
       
      Pelo botão eu só consigo insistir um produtos só então a opção correta seria o checkout transparente mesmo se alguém puder me ajudar agradeço 
    • By joeythai
      Bom dia pessoal, minha dúvida é simples, vi que alguns arquivos xml tem a saída de data desta forma  "2020-01-22T09:18:50", como faço pra imprimir a data desta forma ? E o que significa esse T?]
      Eu estou usando o Carbon, to tentando encontrar esse padrão na documentação.
      2018-05-29T17:47:57 2018-05-29T17:47:57
    • By Sapinn
      Resolvi atualizar meu xampp para a versão 7.4.14 e estou com um erro de Internal Server Error que fica em um projeto que estou usando htacess para fazer urls amigáveis o arquivo usados são:
      Arquivo externo:
       
      <IfModule mod_rewrite.c>
          RewriteEngine on
          RewriteRule ^$ public/ [L]
          RewriteRule (.*)public/$1 [L]
      </IfModule>
       
      Dentro da pasta public:
       
      <IfModule mod_rewrite.c>
          Options -Multiviews
          RewriteEngine On
          RewriteBase /unset_mvc/public
          RewriteCond %{REQUEST_FILENAME} !-d
          RewriteCond %{REQUEST_FILENAME} !-f
          RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
      </IfModule>
       
      Dentro da pasta app:
      Options -Indexes
       
      Preciso de ajuda porquê não sei o que fazer, já tentei apagar algumas coisas no httpd.conf dentro do xampp mas não funcionou.
    • By violin101
      Caros amigo, saudações...

      por favor, me perdoa se postei na opção errada.
       
      estou com a seguinte dúvida.
       
      tenho o seguinte código no cadastro: 1234 0000 4320 9785
       
      como consigo mostrar /inibir os números no meio, para o usuário desta forma: 1234********9785
       
      Grato,
       
      Cesar
    • By Rodrigo5468
      Olá, boa tarde!
       
      Eu estava procurando na internet, mas não obtive nenhum resultado significativo.
      Eu preciso de um script em php que converte os links do youtube para o formato .mp4. Como que eu posso fazer isso? Alguma dica?
      Quero que quando o usuário informa o link do youtube no input e clica no botão de converter baixe o vídeo e faz a conversão para .mp4 e fornece para o usuário o link convertido para .mp4.
       
       
      Obrigado desde já.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.