Ir para conteúdo

Arquivado

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

rafaelcastro

Redimensionando imagem na hora do upload

Recommended Posts

Bom dia... Estou montando um berçário virtual não consigo fazer redimensionar a figura na hora do upload...Eis o código que estou usando: $arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE; // Prepara a variável caso o formulário tenha sido postado $config = array(); //Cria uma matriz $config["diretorio"] = "fotos/"; // Diretório onde a imagem será salva $imagem_nome = $senha.".jpg"; $imagem_dir = $config["diretorio"] . $imagem_nome; // Caminho de onde a imagem ficará move_uploaded_file($arquivo["tmp_name"], $imagem_dir); // Faz o upload da imagemJá tentei pegar um código lá do PHP.NET mas não consegui fazer funcionarEsse código acima faz o upload da image certinho, mas não redimensionaAlguém tem uma idéia de como fazer funcionar?Em tempo: a imagem terá que ser redimensionada para 250x188Abraço a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara este negócio de resimensionamento é meio complicado já que forçar um tamanho as vezes pode ocultar uma parte da imagem. Eu não acho isso muito importante quando estamos falando de uma imagem que vá apenas ser link para a original.

 

Eu fiz agora abaixo um script de imagem pra você dar uma olhada.

 

Antes devo ressaltar que a biblioteca gd2 deve está habilitada.

 

Você pode habilita-la retirando o ; da extensions gd2 na lista de extensions no arquivo php.ini após descomentar a linha salve e reinicie o apache.

 

<?php// Primeiro você pega a imagem original e armazena em uma variavel:$imagem = "imagens/seila.jpg";// declara os tamanhos$x = 250;$y = 188;// verifica se o arquivo existeif (file_exists($imagem)){// vamos ler a imagem$lerimagem = imagecreatefromjpeg($imagem);// pegar a largura da imagem$img_largura = imagesx($lerimagem);// pegar a altura da imagem$img_altura = imagesy($lerimagem);// dar um nome padrão para a miniatura$nome_miniatura = explode('.',$imagem);$nome_miniatura = $nome_miniatura[0]."_min.jpg";// Agora sim a gente pode criar a imagem// definir o tamanho da nova imagem$nova = imagecreatetruecolor($x,$y);// agora é só copiar a imagem original para dentro da nova imagemimagecopyresampled($nova,$lerimagem,0,0,0,0,$x+1,$y+1,$img_largura,$img_altura);// salve o arquivoimagejpeg($nova,$nome_miniatura);// Pronto, fim. Libera a memória usadaimagedestroy($lerimagem);imagedestroy($nova);}else{echo $imagem . " não encontrada";}?>

EDIT:

 

Ah é tem um detalhe, se a imagem for inferior ao tamanho máximo teremos um problema: Ela vai aumentar a imagem para aquele tamanho. Então vai ficar distorcida. Mas isso só se ela for menor. Você pode criar uma condição

 

if ($img_largura < $x && $img_altura < $y)// você pode parar o script pra não fazer nada. Ou imprime o erro, sei la, o que você quiser.

Compartilhar este post


Link para o post
Compartilhar em outros sites

FelipeDD redimensionamento é importante sim, quando se precisa criar thumbmails ou pra limitar um maximo, imagina o cara fazendo o upload de uma imagem de grande resolução, o sistema tem que limitar e nao perde nenhuma parte da imagem se fazer o redicionamento certo e proporcional

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah é você quer se seja no instante do upload, ta, então você no script que envia a imagem você coloca a imagem que acabou de subir como a imagem que vai receber a imagem.Ah Fabyo, beleza. Eu imaginava que perdia com base num programa que eu tenho de imagens....hehe Ele sempre corta um pedaço da imagem.Fui la no manual e olhei e montei aí o script. Claro que ele poderia ser bem melhor que isso, usando uma classe, ou pelo menos uma function. Mas eu testei o script e ta legal, não cortou mesmo.Na parte do edit eu coloquei la q se a imagem for menor ela redimensiona pro tamanho certo. Mas deixa desfocado pq não tem como fazer com que ela fique perfeita.Até mesmo com o photoshop se a gente pega uma imagem pequena e tenta aumenta-la ela perde o foco.Um abraço e obrigado por esclarer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi rafael....

 

aí vai um script que eu uso em um sistema....

 

//INICIO DA ROTINA DE REDIMENSIONAMENTO DA IMAGEM ENVIA			$caminho = "/home/micropinhal/www/balcao_empregos/fotos/" . $arqLocal; //DEFINE O CAMINHO ONDE ESTÁ A IMAGEM QUE DEVE SER REDIMENSIONADA			//CRIA UMA NOVA IMAGEM			$imagem_orig = ImageCreateFromJPEG($caminho); //CRIA UM IDENTIFICADOR DA IMAGEM			//LARGURA/ALTURA DA IMAGEM			$pontoX		  =   ImagesX($imagem_orig); //DEFINE A LARGURA DA IMAGEM DE ORIGEM			$pontoY		  =   ImagesY($imagem_orig); //DEFINE A ALTURA DA IMAGEM DE ORIGEM			$imagem_fin	  =   ImageCreateTrueColor(68, 90); //CRIA UMA IMAGEM PRETA COM ESSAS MEDIDAS.			//COPIA A IMAGEM DE ORIGEM NA IMAGEM DE DESTINO			ImageCopyResampled($imagem_fin, $imagem_orig, 0, 0, 0, 0, 68, 90, $pontoX, $pontoY);			//DÁ PERMISSÃO DE LEITURA E DE ESCRITA NA PASTA			//chmod("/home/micropinhal/www/balcao_empregos/fotos", 0777);   			//COMENTEI ESTA PARTE POIS ESTAVA DANDO ERRO, E ALTEREI AS PROPRIEDADES PELO GERENCIADOR DE ARQUIVOS DA HOSTNET			//SALVA A IMAGEM			ImageJPEG($imagem_fin, "/home/micropinhal/www/balcao_empregos/fotos/img_cod" . $_SESSION['cod_candidato']);			//LIBERA A MEMÓRIA			ImageDestroy($imagem_orig);			ImageDestroy($imagem_fin);			//EXCLUI O ARQUIVO DE ORIGEM			ftp_delete($con, $arqLocal);

 

Espero que te ajude.... procurei comentar ao máximo!

 

B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Melhorei o código para redimensionar sem perder a proporção (neste caso a largura máxima sempre vai ser 250, mas você pode alterar como quiser):

 

CODE
//INICIO DA ROTINA DE REDIMENSIONAMENTO DA IMAGEM ENVIA

$caminho = "D:/sites/oba/admin/fotos/" . $foto; //DEFINE O CAMINHO ONDE ESTÁ A IMAGEM QUE DEVE SER REDIMENSIONADA

//CRIA UMA NOVA IMAGEM

$imagem_orig = ImageCreateFromJPEG($caminho); //CRIA UM IDENTIFICADOR DA IMAGEM

//LARGURA/ALTURA DA IMAGEM

$pontoX = ImagesX($imagem_orig); //DEFINE A LARGURA DA IMAGEM DE ORIGEM

$pontoY = ImagesY($imagem_orig); //DEFINE A ALTURA DA IMAGEM DE ORIGEM

//

$fator=($pontoY/$pontoX);

$altura=(250*$fator);

$imagem_fin = ImageCreateTrueColor(250,$altura); //CRIA UMA IMAGEM PRETA COM ESSAS MEDIDAS.

//COPIA A IMAGEM DE ORIGEM NA IMAGEM DE DESTINO

ImageCopyResampled($imagem_fin, $imagem_orig, 0, 0, 0, 0, 250,$altura, $pontoX, $pontoY);

//SALVA A IMAGEM

ImageJPEG($imagem_fin, "D:/sites/oba/admin/fotos/" . $foto);

//LIBERA A MEMÓRIA

ImageDestroy($imagem_orig);

ImageDestroy($imagem_fin);

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.