Redimensionando fotos automaticamente
Queridos, eu de novo aqui. Quase todos os meus problemas já foram resolvidos, falta pouco, Tenho o código abaixo, no caso específico da foto, ele verifica o tamanho e diz que não é válido o tamanho, porém as vezes você tenta inserir a foto ela da o aviso mais simplesmente exclui a foto que estava lá. Além do que em um cadastro de cliente ficar redimensionado foto é chato. Queria saber se tem como em vez dele dar o aviso, ele redimensionar uma foto para uma tamanho padrão quando eu fizer o upload. Abaixo o código: // Conexão com o banco de dados
include "dbconfig.php". if ($_POST['enviar'] == 1) { // Recupera os dados dos campos // Recupera os dados dos campos $id_cliente = $_POST['id_cliente']. $foto = $_FILES["foto"]. // Se a foto estiver sido selecionada if (!empty($foto["name"])) { // Largura máxima em pixels $largura = 150. // Altura máxima em pixels $altura = 180. // Tamanho máximo do arquivo em bytes $tamanho = 1000. // Verifica se o arquivo é uma imagem if(!@eregi("^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". } // Verifica se o tamanho da imagem é maior que o tamanho permitido if($arquivo["size"] > $tamanho) { $error[4] = "A imagem deve ter no máximo ".$tamanho." bytes". } // Se não houver nenhum erro if (count($error) == 0) { // 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. // Faz o upload da imagem para seu respectivo caminho move_uploaded_file($foto["tmp_name"], $caminho_imagem). } } // Se o usuário clicou no botão cadastrar efetua as ações if ($_POST['cadastrar']) { // Insere os dados no banco $sql = mysql_query("INSERT INTO clientes VALUES ('', '".$nome_imagem."')"). // Se os dados forem inseridos com sucesso if (mysql_affected_rows() > 0){ echo "Cliente cadastrado com sucesso.". } else{ echo "Erro ao cadastrar.". } } Então queridos. peguei esse código na net. O arquivo index: <?php include_once ("funcao/Redimensiona.php"). if (isset($_POST['acao']) && $_POST['acao']=="cadastrar"){ $foto = $_FILES['foto']. $redim = new Redimensiona(). $src=$redim->Redimensionar($foto, 150, "images"). }?> <html> <head> <title>Teste</title> </head> <body> <form method="post" action="" enctype="multipart/form-data"> <label>Foto <input type="file" name="foto" /></label> <input type="submit" value="Enviar" /> <input type="hidden" name="acao" value="cadastrar" /> </form> <?php if (isset($_POST['acao']) && $_POST['acao']=="cadastrar"){ echo "<img src=\"$src\">". }?> </body> </html> E o arquivo Redimensiona <?php class Redimensiona{ public function Redimensionar($imagem, $largura, $pasta){ $name = md5(uniqid(rand(),true)). if ($imagem['type']=="image/jpeg"){ $img = imagecreatefromjpeg($imagem['tmp_name']). }else if ($imagem['type']=="image/gif"){ $img = imagecreatefromgif($imagem['tmp_name']). }else if ($imagem['type']=="image/png"){ $img = imagecreatefrompng($imagem['tmp_name']). } $x = imagesx($img). $y = imagesy($img). $autura = ($largura * $y)/$x. $nova = imagecreatetruecolor($largura, $autura). imagecopyresampled($nova, $img, 0, 0, 0, 0, $largura, $autura, $x, $y). if ($imagem['type']=="image/jpeg"){ $local="$pasta/$name".".jpg". imagejpeg($nova, $local). }else if ($imagem['type']=="image/gif"){ $local="$pasta/$name".".gif". imagejpeg($nova, $local). }else if ($imagem['type']=="image/png"){ $local="$pasta/$name".".png". imagejpeg($nova, $local). } imagedestroy($img). imagedestroy($nova). return $local. } }?> Adaptei tranquilamente ao meu código, mas quem quiser testar pode ver que ele só ajusta a largura e não a altura. Teria como fazer ele redimensionar tanto na largura quanto na altura? Quem puder testar e me da uma ajuda agradeço. segue o exemplo em anexo. https://onedrive.live.com/redir?resid=8D03EFD53FA8E739!112&authkey=!AIvyqCGt4dNW1d0&ithint=file,.zip Poxa, ninguém da uma luz?Discussão (23)
Carregando comentários...