Ir para conteúdo

POWERED BY:

Arquivado

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

T.Colucci

[Resolvido] Erro na criação de Thumb

Recommended Posts

Bom dia a todos!

 

O que acontece:

 

Preciso que ao usuário submeter uma imagem, o script envie a imagem para uma pasta e crie um thumb junto. Esse thumb deve ser proporcional, ou seja, não pode perder a qualidade. Pesquisando na net descobri uma formula matemática pra isso:

 

$Altura_nova = ($altura_do_arquivo*$largura_nova)/$largura_do_arquivo

 

Até ai tudo bem. Ao ser submetido o formulário, a imagem é enviada, mas em vez de criar um thumb, esta sendo criado um arquivo do tipo .FILE!!!!

 

Já tentei de tudo aqui mas não estou achando o erro. Se alguém puder me ajudar a resolver, agradeço muito!!

 

Código que estou utilizado:

<?php

/**
 * @author Tiago Colucci
 * @copyright 2009
 */

// Configurações upload
	$diretorio = 'images/';
	$pesoMax = '200000000'; // Em bytes

	$imagem = $_FILES['imagem']; // pego o array com as imagens e as coloco na variavel $imagem
	
		if(!empty($imagem['name'])){
		
		
		if($imagem['size'] > $pesoMax){
			echo '<script type="text/javascript">
	   	 	alert("Arquivo em tamanho muito grande, a imagem deve ter no máximo ' . $pesoMax . ' bytes. Envie outro arquivo, ou compacte-o");
			history.go(-1);
			</script>';
		exit;				
		}
		/*if($tipo != "2" and $tipo != "1" and $tipo != "3"){
			echo '<script type="text/javascript"> alert("A imagem tem que ser um JPG, PNG ou GIF."); history.go(-1); </script>';
		exit;
		}*/
		else{
		$caminho = $diretorio.$imagem['name'];	
	
		if(move_uploaded_file($imagem['tmp_name'], $caminho)){
		//echo "$caminho";
		
		list($largura,$altura,$tipo)=getimagesize($caminho);
		
		#setando a largura da miniatura
		$new_width = 145;
		#setando a altura da miniatura
		$new_height = ($altura*$new_width)/$largura;
		
		$Thumbnail = imagecreatetruecolor($new_width, $new_height);
		$imagemm = imagecreatefromjpeg($caminho);		

		#================Diminuo a imagem preservado as cores e diminuindo a imagem, no caso 90 x 90
		imagecopyresampled($Thumbnail, $imagemm, 0, 0, 0, 0, $new_width, $new_height, $largura, $altura);

		#================Aqui a imagem vai pequena
		imagejpeg($Thumbnail, $diretorio.'pequena_'.$imagemm);

		#================Criando a imagem
		$pequena = $diretorio.'pequena_'.$imagemm;	
		
		$img = $imagem['name'];
		
	  }
	}
  } 

?>

Não reparem no código, ele esta bem sujo depois de tantas tentativas, hehehe.

Agradeço muito pela atenção! Valew.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui no laboratório tem uma classe desta ai

 

segue o link e compare onde você está errando http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

http://forum.imasters.com.br/index.php?showtopic=164120

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia a todos!

 

O que acontece:

 

Preciso que ao usuário submeter uma imagem, o script envie a imagem para uma pasta e crie um thumb junto. Esse thumb deve ser proporcional, ou seja, não pode perder a qualidade. Pesquisando na net descobri uma formula matemática pra isso:

 

$Altura_nova = ($altura_do_arquivo*$largura_nova)/$largura_do_arquivo

 

Até ai tudo bem. Ao ser submetido o formulário, a imagem é enviada, mas em vez de criar um thumb, esta sendo criado um arquivo do tipo .FILE!!!!

 

Já tentei de tudo aqui mas não estou achando o erro. Se alguém puder me ajudar a resolver, agradeço muito!!

 

Código que estou utilizado:

<?php
 
 /**
  * @author Tiago Colucci
  * @copyright 2009
  */
 
 // Configurações upload
	 $diretorio = 'images/';
	 $pesoMax = '200000000'; // Em bytes
 
	 $imagem = $_FILES['imagem']; // pego o array com as imagens e as coloco na variavel $imagem
	 
		 if(!empty($imagem['name'])){
		 
		 
		 if($imagem['size'] > $pesoMax){
			 echo '<script type="text/javascript">
				 alert("Arquivo em tamanho muito grande, a imagem deve ter no máximo ' . $pesoMax . ' bytes. Envie outro arquivo, ou compacte-o");
			 history.go(-1);
			 </script>';
		 exit;				
		 }
		 /*if($tipo != "2" and $tipo != "1" and $tipo != "3"){
			 echo '<script type="text/javascript"> alert("A imagem tem que ser um JPG, PNG ou GIF."); history.go(-1); </script>';
		 exit;
		 }*/
		 else{
		 $caminho = $diretorio.$imagem['name'];	
	 
		 if(move_uploaded_file($imagem['tmp_name'], $caminho)){
		 //echo "$caminho";
		 
		 list($largura,$altura,$tipo)=getimagesize($caminho);
		 
		 #setando a largura da miniatura
		 $new_width = 145;
		 #setando a altura da miniatura
		 $new_height = ($altura*$new_width)/$largura;
		 
		 $Thumbnail = imagecreatetruecolor($new_width, $new_height);
		 $imagemm = imagecreatefromjpeg($caminho);		
 
		 #================Diminuo a imagem preservado as cores e diminuindo a imagem, no caso 90 x 90
		 imagecopyresampled($Thumbnail, $imagemm, 0, 0, 0, 0, $new_width, $new_height, $largura, $altura);
 
		 #================Aqui a imagem vai pequena
		 imagejpeg($Thumbnail, $diretorio.'pequena_'.$imagemm);
 
		 #================Criando a imagem
		 $pequena = $diretorio.'pequena_'.$imagemm;	
		 
		 $img = $imagem['name'];
		 
	   }
	 }
   } 
 
 ?>

Não reparem no código, ele esta bem sujo depois de tantas tentativas, hehehe.

Agradeço muito pela atenção! Valew.

nessa parte

#================Diminuo a imagem preservado as cores e diminuindo a imagem, no caso 90 x 90
		imagecopyresampled($Thumbnail, $imagemm, 0, 0, 0, 0, $new_width, $new_height, $largura, $altura);

		#================Aqui a imagem vai pequena
		imagejpeg($Thumbnail, $diretorio.'pequena_'.$imagemm);

		#================Criando a imagem
		$pequena = $diretorio.'pequena_'.$imagemm;

tenta assim :

#================Diminuo a imagem preservado as cores e diminuindo a imagem, no caso 90 x 90
		imagecopyresampled($Thumbnail, $imagemm, 0, 0, 0, 0, $new_width, $new_height, $largura, $altura);

		#================Aqui a imagem vai pequena
		imagejpeg($Thumbnail, $diretorio.'pequena_'.$imagemm . ".jpg");

		#================Criando a imagem
		$pequena = $diretorio.'pequena_'.$imagemm . ".jpg";

e posta os resultados ;)

tudo que fiz foi apenas concatenar uma extensao ao nome da imagem gerada, nada mais :D

 

flw xD/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então amigo, tentei fazer isso, mas agora as imagens não são enviadas! O que pode ser?

 

Deixe-me dar uma estudada melhor aqui...:D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae galera! Consegui resolver!

 

Segue o código funfando! Valew a todos que postaram e me ajudaram!

 

<?php

/**
 * @author Tiago Colucci
 * @copyright 2009
 */

// Configurações upload
	$diretorio = 'images/';
	$pesoMax = '200000000'; // Em bytes

	$imagem = $_FILES['imagem']; // pego o array com as imagens e as coloco na variavel $imagem
	
		if(!empty($imagem['name'])){
				
		$caminho = $diretorio.$imagem['name'];	
	
		if(move_uploaded_file($_FILES['imagem']['tmp_name'], $caminho)){
		//echo "$caminho";
		
		list($largura,$altura,$tipo)=getimagesize($caminho);
		
		#setando a largura da miniatura
		$new_width = 145;
		#setando a altura da miniatura
		$new_height = ($altura * $new_width)/$largura;
		
		
		$imagem = imagecreatefromjpeg($caminho);
		$thumb = imagecreatetruecolor($new_width, $new_height);
				

		#================Diminuo a imagem preservado as cores e diminuindo a imagem, no caso 90 x 90
		imagecopyresampled($thumb, $imagem, 0, 0, 0, 0, $new_width, $new_height, $largura, $altura);

		#================Aqui a imagem vai pequena
		imagejpeg($thumb, $diretorio.'/mini_'.$_FILES['imagem']['name']. ".jpg");

		#================Criando a imagem
		$pequena = $diretorio.'mini_'.$_FILES['imagem']['name']. ".jpg";
		
		$img = $imagem['name'];
		?>
		
		<script type="text/javascript">alert("Imagem enviada com sucesso!"); history.go(-1);</script>
		
		<?php
		
	  }
	}
	
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é mano só falta você colocar uma função que faça o redimensionamento-de-imagens automaticamente, assim você evitaria ter que diminuir o tamanho de imagens em pixels manualmente e tendo imagens de 1mb de no tamanho de 90x90px, onde estas poderia ser reduzidas em 2kb

 

Uma coisa é você mesmo fazer upload, outra é um simples usuário que mal sabe usar o paint

 

Abraços

 

segue a função

 

<?php
/*Fabyo Guimaraes de Oliveira */
function reduz_imagem($img, $max_x, $max_y, $nome_foto) {

//pega o tamanho da imagem ($original_x, $original_y)
list($width, $height) = getimagesize($img);

$original_x = $width;
$original_y = $height;

// se a largura for maior que altura
if($original_x > $original_y) {
   $porcentagem = (100 * $max_x) / $original_x;	  
} 
else {
   $porcentagem = (100 * $max_y) / $original_y;   
}

$tamanho_x = $original_x * ($porcentagem / 100);
$tamanho_y = $original_y * ($porcentagem / 100);

$image_p = imagecreatetruecolor($tamanho_x, $tamanho_y);
$image   = imagecreatefromjpeg($img);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height);


return imagejpeg($image_p, $nome_foto, 100);

}

?>

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.