T.Colucci 33 Denunciar post Postado Janeiro 22, 2009 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
Williams Duarte 431 Denunciar post Postado Janeiro 22, 2009 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
T.Colucci 33 Denunciar post Postado Janeiro 22, 2009 Opa! Vou dar uma olhada sim! Valeu pela dica! Compartilhar este post Link para o post Compartilhar em outros sites
OoDragooNoO 0 Denunciar post Postado Janeiro 22, 2009 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
T.Colucci 33 Denunciar post Postado Janeiro 22, 2009 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
T.Colucci 33 Denunciar post Postado Janeiro 22, 2009 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
Williams Duarte 431 Denunciar post Postado Janeiro 22, 2009 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