Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Danielle_Knudsen

Upload de Fotos com Resize e Rename

Recommended Posts

Olá a todos,

 

Sou novata em PHP e gostaria de uma ajudinha.

 

Eu encontrei na internet um modo de enviar fotos locais para meu site e renomear o nome do arquivo baseado no ID da tabela, tudo funciona perfeitamente, porém, eu preciso que além do upload e do "rename", este arquivo fosse enviado já redimensionado para 320x240 px. Alguém pode me ajudar ?

 

Passei o dia inteiro procurando na internet sistemas assim mas não consegui adaptar nenhum para meu caso.

 

Agradeço de coração quem puder me ajudar.

 

 

 

<?php
// conectar a base dados
include('connect.php');

// Função para pegar extensão do arquivo
function getExtension($fileName){
	
	$ext = substr(strrchr($fileName, '.'), 1);
	
	// para lower case
	$ext = "." . strtolower($ext);
	
	return $ext;
}

// nova foto
if( isset($_POST['new']) ){

		$sql ="INSERT INTO lista
			VALUES(
				''
				)";
		mysql_query($sql) or die(mysql_error());
		
		// criar diretorio se nao existir
		if(!file_exists("fotos") ){		
			mkdir("fotos");
		}
		
		// pegar ultimo id
		$last_id = mysql_insert_id($link);
		
		
		// fazer o upload
		if( $_FILES['file']['name'] != ''){
			
			// pegar extensao
			$ext = getExtension($_FILES['file']['name']);
		
			// copiar o arquivo
			copy($_FILES['file']['tmp_name'], "fotos/".$last_id. $ext)
			or die("OCORREU UM ERRO, TENTE NOVAMENTE!"); 
		}
		

}



?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Garota depois eu posto o exemplo aqui bj http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Maciel, Obrigada pela sua ajuda.

 

Se você conseguir um exemplo que funcione com o código que eu já tenho seria ótimo, sou meio novata em PHP e não consegui adaptar alguns códigos de resize que encontrei ao meu.

 

Fico Aguardando, obrigada denovo. :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz assim crie uma pagina PHP com o nome :

 

redimenciona.php

<?php
      function Redimensionar($imagem, $name, $largura, $pasta){
            $img = imagecreatefromjpeg($imagem['tmp_name']);
            $x   = imagesx($img);
            $y   = imagesy($img);
            $altura = ($largura * $y)/$x;
            $nova = imagecreatetruecolor($largura, $altura);
            imagecopyresampled($nova, $img, 0, 0, 0, 0, $largura, $altura, $x, $y);
            imagejpeg($nova, "$pasta/$name");
            imagedestroy($img);
            imagedestroy($nova);
            return $name;
      }
   
?>

e no seu codigo php

 

coloque isso

onde tem 150 é o tamanho da largura ....

mude pra o valor que você quiser.....

//redimencionar 
Redimensionar($foto, $name, 150, "images");
Duvidas.... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

MEU MSN: macielc.ronaldo@hotmail.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Maciel,

 

Obrigada novamente pela ajuda, mas seu eu faço exatamente como você diz dá o seguinte erro.

 

"Fatal error: Call to undefined function redimensionar() in .... on line 34"

 

Alterei então o nome do arquivo criado de "redimensiona.php" para "redimensionar.php", coloquei o include para o arquivo no meu código e utilizei o código que você informou

 

<?php
// conectar a base dados
include('connect.php');
include('redimensionar.php');

function getExtension($fileName){
	
	// pegar extensão
	$ext = substr(strrchr($fileName, '.'), 1);
	
	// para lower case
	$ext = "." . strtolower($ext);
	
	return $ext;
}

// nova foto
if( isset($_POST['new']) ){

		$sql ="INSERT INTO list
			VALUES(
				''
				)";
		mysql_query($sql) or die(mysql_error());
		
		// criar diretorio se nao existir
		if(!file_exists("fotos") ){		
			mkdir("fotos");
		}
		
		// pegar ultimo id
		$last_id = mysql_insert_id($link);

		//Redimencionar 
		Redimensionar($foto, $name, 70, "images");
		
		
		// fazer o upload
		if( $_FILES['file']['name'] != ''){
			
			// pegar extensao
			$ext = getExtension($_FILES['file']['name']);
		
			// copiar o arquivo
			copy($_FILES['file']['tmp_name'], "fotos/".$last_id. $ext)
			or die("FILE COULD NOT BE UPLOADED TRY AGAIN!"); 
		}
		
		
}



?>

 

E nada, a imagem não é redimensionada, tentei mudar o campo "images" para o nome da minha pasta "fotos" onde são gravadas as fotos e nada também ?

 

O que estou fazendo de errado ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha vou te mandar um exemplo feito...... beleza é só você ver e configurar pro seu codigo.......

index.php

<?php
      if(isset($_POST['acao']) && $_POST['acao'] == 'cadastrar'){
         $foto = $_FILES['foto'];
         if($foto['type'] == 'image/jpeg'){
            require("funcao_upload.php");
            $name = md5(uniqid(rand(), true)).".jpg";            
            Redimensionar($foto, $name, 150, "images");
         }   
      }
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Redimensionar Imagem</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>

</body>
</html>

<?php
      function Redimensionar($imagem, $name, $largura, $pasta){
            $img = imagecreatefromjpeg($imagem['tmp_name']);
            $x   = imagesx($img);
            $y   = imagesy($img);
            $altura = ($largura * $y)/$x;
            $nova = imagecreatetruecolor($largura, $altura);
            imagecopyresampled($nova, $img, 0, 0, 0, 0, $largura, $altura, $x, $y);
            imagejpeg($nova, "$pasta/$name");
            imagedestroy($img);
            imagedestroy($nova);
            return $name;
      }
   
?>

pronto garota tá aiii só testar e crie uma pasta com o nome images

 

MSN: macielc.ronaldo@hotmail.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada Novamente Maciel,

 

Mas como disse antes eu já peguei diversos modelos de upload e resize na internet, consegui fazê-los funcionar também, mas preciso de um que funcione no código que já tenho e postei em minha primeira pergunta, porque já o utilizo em outras partes e considero mais fácil faze-lo funcionar do que adequar o resto do site a novos sistemas.

 

O modelo que você mandou cria um nome aleatório md5 e não baseado no ID de minha tabela. Por isso resolvi postar minha dúvida aqui no fórum, para que alguém possa me ajudar a implementar o Resize no código que já tenho, você consegue fazer isto ? Já tenho o código para upload focado no que preciso, preciso apenas que a imagem seja redimensionada e enviada para pasta fotos já setada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada Novamente Maciel,

 

Mas como disse antes eu já peguei diversos modelos de upload e resize na internet, consegui fazê-los funcionar também, mas preciso de um que funcione no código que já tenho e postei em minha primeira pergunta, porque já o utilizo em outras partes e considero mais fácil faze-lo funcionar do que adequar o resto do site a novos sistemas.

 

O modelo que você mandou cria um nome aleatório md5 e não baseado no ID de minha tabela. Por isso resolvi postar minha dúvida aqui no fórum, para que alguém possa me ajudar a implementar o Resize no código que já tenho, você consegue fazer isto ? Já tenho o código para upload focado no que preciso, preciso apenas que a imagem seja redimensionada e enviada para pasta fotos já setada.

 

Ola amiga olha é o seguinte amanhã eu posto seu codigo resolvido tá bjs.!'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Danielle,

 

Seguinte: Eu conheço dois scripts súper fáceis de se usar, e acredito que podem lhe servir. Na verdade são classes prontas, cheias de recursos e fazem um monte de coisa por você, sem que você tenha que quebrar muito a cabeça.

 

Tem esse: Classe do Verot (que eu gosto mais);

E este: WideImage (muito bom também);

 

A primeira classe, eu acho muito mais fácil de se usar, e se você der uma estudada rapidinho nela, dá para aplicar em suas páginas sem nenhuma dificuldade.

Todas as duas classes que citei tem opções de raname, upload, e resize, além de muitas outras funções interessantes.

 

Dica: quando for testar o seu upload em algum servidor de hospedagem, é importante verificar se a pasta onde você vai fazer o upload está com as propriedades de leitura e escrita ativada. Isso costuma dar bastante erro no inicio.

 

 

Fica aí a dica. Abraços. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite galera!

 

To usando o script fornecido pelo nosso amigo lá no começo do tópico.

 

Dei apenas uma editada pra ficar como eu preciso! :)

 


		$diretorio = '/full/';
		$envia = $diretorio . $_FILES['arquivo']['name'];
	    
		$novonome = $diretorio.$referencia.".jpg";
	    
		$renomeia = rename($_FILES['arquivo']['tmp_name'],$diretorio.$referencia.".jpg");
			    
		$upload = move_uploaded_file($_FILES['arquivo']['tmp_name'],$envia);
	    

        $img = imagecreatefromjpeg($diretorio.$referencia.".jpg");
        $x   = imagesx($img);
		$y   = imagesy($img);
		$altura = 100;
		$largura = 100;
	    
		$thumbs = '/thumbs/'.$referencia.'.jpg';
		$nova = imagecreatetruecolor($largura, $altura);
		imagecopyresampled($nova, $img, 0, 0, 0, 0, $largura, $altura, $x, $y);
		imagejpeg($nova, $thumbs);
		imagedestroy($img);
		imagedestroy($nova);
		return $name;    

 

A questão é, ta funcionando, ele faz o upload com o nome que eu quero pra dentro da pasta "full" e cria uma nova imagem do tamanho 100/100 na pasta "thumbs". Consigo visualizar as duas sem problema nenhum, porém aparece sempre dois erros.

 

Warning: move_uploaded_file(/home/matheusfelini/tmp/phpNqWbEv) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/matheusfelini/public_html/testes/Imagem.class.php on line 13

 

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/home/matheusfelini/tmp/phpNqWbEv' to 'full/147852.jpg' in /home/matheusfelini/public_html/testes/Imagem.class.php on line 13

 

 

Apesar desses erros, o upload e redimensionamento acontecem normalmente, podem dar uma ajuda aí?

 

Podem testar através do link abaixo:

http://www.matheusfe...stes/upload.php

 

 

 

Valeeeu!

 

 

[]s

felini

Obs: agora sim no tópico certo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionou porque não é um erro, é um aviso

 

WARNING != FATAL ERROR

 

isso acontece em alguns servidores, dependendo de como foi configurado

 

o que você pode fazer é calar as mensagens do comando, já que você sabe que ele esta funcionando correntamente.

 

$upload = @move_uploaded_file($_FILES['arquivo']['tmp_name'],$envia);

 

o @ na frente dos comandos faz o calar qualquer saida que el possa vir a ter. só aconselho em caso de WARNNG pois senao você nunca localizaria um determinado erro.

 

outra saida é usar o comando copy no lugar do move_uploaded_file. Servidores bem configurados limpa periodicamente a pasta temporaria. Não havendo necessidade de se preocupar com isso.

 

Quanto aarmazenar o THUMB no servidor, acho util dar uma lida na minha resposta nesse outro tópico:

 

http://forum.imasters.com.br/index.php?/topic/386156-variaveis-de-upload/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionou porque não é um erro, é um aviso

 

WARNING != FATAL ERROR

 

isso acontece em alguns servidores, dependendo de como foi configurado

 

o que você pode fazer é calar as mensagens do comando, já que você sabe que ele esta funcionando correntamente.

 

$upload = @move_uploaded_file($_FILES['arquivo']['tmp_name'],$envia);

 

o @ na frente dos comandos faz o calar qualquer saida que el possa vir a ter. só aconselho em caso de WARNNG pois senao você nunca localizaria um determinado erro.

 

outra saida é usar o comando copy no lugar do move_uploaded_file. Servidores bem configurados limpa periodicamente a pasta temporaria. Não havendo necessidade de se preocupar com isso.

 

Quanto aarmazenar o THUMB no servidor, acho util dar uma lida na minha resposta nesse outro tópico:

 

http://forum.imaster...veis-de-upload/

 

Pois é, eu pensei em usar o @ e tal, mas não gosto muito de calar estas mensagens.

Vou fazer alguns testes de acordo com o tópico que tu me indico e utilizando a função "copy" pra ver qual tem melhor resultado! :)

 

Valeu aí cara!

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.