Ir para conteúdo

POWERED BY:

Arquivado

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

Sphinter

Upload Imagem + Thumbnails

Recommended Posts

Boa Tarde,Ja estou quebrando a cabeça com isso a dias...Ja tentei a calsse do Fabyo para Thumbnails das imagems, porém consegui apenas para ele gerar uma ThumbNails (Foto original + Mini), é exatamente isso que eu preciso, porém teria que ser um upload multiplo.Alguem sabe se ja tem algum script tutorial ai que me de uma luz de como fazer?Não tenho problemas com Multiplos Upload de Arquivos nem com Redimencionamento de imagens, mas tenho sérios problemas na hora de juntar os dois...Ou seja, oque eu preciso é Multiplo Upload de Arquivos + Redimencionar as Imagens (Tratalas).No Aguardo,Valew ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera, eu to com o script aqui que gera as miniaturas e retorna uma imagem,

 

<?phpfunction reduz_img ($imagem, $l, $a){  define(MAX_WIDTH, $l);  define(MAX_HEIGHT, $a);  $image_path = $img;  #Carrega a imagem  $img = null;  $extensao = strtolower(end(explode('.', $image_path)));  if ($extensao == 'jpg' || $extensao == 'jpeg') {	  $img = @imagecreatefromjpeg($image_path);  } else if ($extensao == 'png') {	  $img = @imagecreatefrompng($image_path);// Se a versão do GD incluir suporte a GIF, mostra...  } else if ($extensao == 'gif') {	  $img = @imagecreatefromgif($image_path);  }else{	 echo "So pode ser utilizado imagens no formato JPG, GIF ou PNG.";  }  if ($img) {	 $w = imagesx($img);	 $h = imagesy($img);	 $scale = min(MAX_WIDTH/$w, MAX_HEIGHT/$h);	 if($scale <1){		$new_w = floor($scale*$w);		$new_h = floor($scale*$h);		  //Criando a Imagem temporaria		$tmp_img = imagecreatetruecolor($new_w, $new_h);// copia e resize a imagem velha na nova		imagecopyresampled($tmp_img, $img, 0, 0, 0, 0,						 $new_w, $new_h, $w, $h);		imagedestroy($img);						 $img = $tmp_img;	 }  }//Criando uma imagem de erro se necesario...  if(!$img){		$img = imagecreate(MAX_WIDTH, MAX_HEIGHT);		imagecolorallocate($img,204,204,204);		$c = imagecolorallocate($img,0,0,0);		$c1 = imagecolorallocate($img,0,103,76);		imagestring($img, 2, 0, 10, ' Ocorreu um erro ao tentar',$c1);		imagestring($img, 2, 0, 25, '	  abrir a imagem.',$c);}//Mostrando a imagem..return imagejpeg($img);}?>

se eu chamar essa função assim:

<img src="<? reduz_img("http://endereco_da_img","170","170"); ?>">

ela me retorna a imagem.

 

So que eu queria era criar essa imagem reduzida e fazer o upload dela.

 

Alguma ideia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

_vina valew pela ajuda, consegui fazer o upload dela atravez dfe algumas modificações no meu código, porém ainda estou com dúvidas.

 

Coloco meu código primeiro e logo abaixo está minha dúvida.

 

foto.php

<?phpfunction reduz_img ($imagem, $l, $a){  define(MAX_WIDTH, $l);  define(MAX_HEIGHT, $a);  $image_file = str_replace('..', '', $imagem);  $image_path = $image_file;  #Carrega a imagem  $img = null;  $extensao = strtolower(end(explode('.', $image_path)));  if ($extensao == 'jpg' || $extensao == 'jpeg') {	  $img = @imagecreatefromjpeg($image_path);  } else if ($extensao == 'png') {	  $img = @imagecreatefrompng($image_path);// Se a versão do GD incluir suporte a GIF, mostra...  } else if ($extensao == 'gif') {	  $img = @imagecreatefromgif($image_path);  }else{	 echo "So pode ser utilizado imagens no formato JPG, GIF ou PNG.";  }  if ($img) {	 $w = imagesx($img);	 $h = imagesy($img);	 $scale = min(MAX_WIDTH/$w, MAX_HEIGHT/$h);	 if($scale <1){		$new_w = floor($scale*$w);		$new_h = floor($scale*$h);		  //Criando a Imagem temporaria		$tmp_img = imagecreatetruecolor($new_w, $new_h);// copia e resize a imagem velha na nova		imagecopyresampled($tmp_img, $img, 0, 0, 0, 0,						 $new_w, $new_h, $w, $h);		imagedestroy($img);						 $img = $tmp_img;	 }  }//Criando uma imagem de erro se necesario...if (!$img) {	$img = imagecreate(MAX_WIDTH, MAX_HEIGHT);	imagecolorallocate($img, 204, 204, 204);	$c = imagecolorallocate($img, 153, 153, 153);	$c1 = imagecolorallocate($img, 0, 0, 0);	imageline($img, 0, 0, MAX_WIDTH, MAX_HEIGHT, $c);	imageline($img, MAX_WIDTH, 0, 0, MAX_HEIGHT, $c);	imagestring($img, 2, 12, 55, 'erro ao carregar imagem', $c1);}//Mostrando a imagem..return $img;}?>
Chamada da Função

<?if(!move_uploaded_file(imagejpeg(reduz_img("imagem.jpg","100","100"), "./5.jpg"))){echo "Enviado";}else{echo "Erro";}?>
1º Dúvida aki nessa chamada,

Se o upload for feito com sucesso o move_uploaded_file retorna TRUE certo?

eu fiz o IF assim so q se eu tirar o "!" da frente ele upa o arquivo porém retorna a mensagem de erro. Não entendi o porque disto.

 

2º Dúvida.

Se eu chamar minha função assim como o descrito acima, ele pega a imagem trata ela e redimensiona e faz o upload com o nome do arquivo 5.jpg na pasta raiz.

Até ai ta otimo,

porém eu estou com problemas na hora de transferir a imagem por um formulario...

 

Estou tentando assim:

 

Formulario:

<form method="POST" enctype="multipart/form-data" action="foto.php"><input type="file" name="arquivos"/> <BR><input type="Submit" value="Botão"></form>
Chamada da Função

<?$arquivo = $_FILES['arquivos'];if(!move_uploaded_file(imagejpeg(reduz_img($arquivo['tmp_name'],"100","100"), "./5.jpg"))){echo "Enviado";}else{echo "Erro";}?>
E estou recebendo a seguinte informação ao tentar executar o upload:

So pode ser utilizado imagens no formato JPG, GIF ou PNG.Warning: Wrong parameter count for move_uploaded_file() in C:\Arquivos de programas\xampp\htdocs\foto.php on line 54Enviado

Se alguem ai conseguir me ajudar ficaria muito grato.

 

Vlw :unsure:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem vamos por partes

 

dei uma olhada rapida no codigo

1º Dúvida aki nessa chamada,

Se o upload for feito com sucesso o move_uploaded_file retorna TRUE certo?

eu fiz o IF assim so q se eu tirar o "!" da frente ele upa o arquivo porém retorna a mensagem de erro. Não entendi o porque disto.

 

<?$arquivo = $_FILES['arquivos'];if(!move_uploaded_file(imagejpeg(reduz_img($arquivo['tmp_name'],"100","100"), "./5.jpg"))){echo "Enviado";}else{echo "Erro";}?>
faz assim

$up = move_uploaded_file(imagejpeg(reduz_img($arquivo['tmp_name'],"100","100"), "./5.jpg"));if($up == TRUE){echo "enviado";}else{echo "Error";}
[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem vamos por partes

 

dei uma olhada rapida no codigo

1º Dúvida aki nessa chamada,

Se o upload for feito com sucesso o move_uploaded_file retorna TRUE certo?

eu fiz o IF assim so q se eu tirar o "!" da frente ele upa o arquivo porém retorna a mensagem de erro. Não entendi o porque disto.

 

<?$arquivo = $_FILES['arquivos'];if(!move_uploaded_file(imagejpeg(reduz_img($arquivo['tmp_name'],"100","100"), "./5.jpg"))){echo "Enviado";}else{echo "Erro";}?>
faz assim

$up = move_uploaded_file(imagejpeg(reduz_img($arquivo['tmp_name'],"100","100"), "./5.jpg"));if($up == TRUE){echo "enviado";}else{echo "Error";}
[]s

Continua acontecendo mesma coisa ='(

 

Ele ta retornando "AO CONTRARIO"....

Compartilhar este post


Link para o post
Compartilhar em outros sites

ueba

 

vamos por partes denovo

 

o seu moveupload esta funcionando?

ele esta subindo a ima para a pasta no servidor?

 

 

 

veja como eu utilizo o meu

 

$envia = $_FILES['file']['name'];	$envia_tmp = $_FILES['file']['tmp_name'];	// Move o arquivo pra pasta ARQUIVOS_CONTRATO	move_uploaded_file($envia_tmp,$dir.$envia);
obs:. $dir ( é o caminho fisico de onde vai ficar a foto)

ex:. /home/www/v2/fotos

 

1º você envia a foto para a pasta

 

depois de enviar você trata ela no seu codigo que você fez ae

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vina, seu eu coloca assim:

<?if(!move_uploaded_file(imagejpeg(reduz_img("imagem.jpg","100","100"), "./5.jpg"))){echo "Enviado";}else{echo "Erro";}?>
Ele envia, porém inverte la o resultado do IF,ja como estou tentando fazer o upload do arquivo que será enviado atravez de um form,eu nãp to conseguindo...To tentando assim:
?$arquivo = $_FILES['arquivos'];if(!move_uploaded_file(imagejpeg(reduz_img($arquivo['tmp_name'],"100","100"), "./5.jpg"))){echo "Enviado";}else{echo "Erro";}?>
Nome do input está como "arquivos" no formulario.E esse é que é meu problema, é na hora de enviar o arquivo por formulario =(

uebavamos por partes denovoo seu moveupload esta funcionando?ele esta subindo a ima para a pasta no servidor?veja como eu utilizo o meu

$envia = $_FILES['file']['name'];	$envia_tmp = $_FILES['file']['tmp_name'];	// Move o arquivo pra pasta ARQUIVOS_CONTRATO	move_uploaded_file($envia_tmp,$dir.$envia);
obs:. $dir ( é o caminho fisico de onde vai ficar a foto)ex:. /home/www/v2/fotos1º você envia a foto para a pastadepois de enviar você trata ela no seu codigo que você fez ae
Erro:Warning: Wrong parameter count for move_uploaded_file() in C:\Arquivos de programas\xampp\htdocs\foto.php on line 54Lnha 54:$up = move_uploaded_file(imagejpeg(reduz_img("$_FILES[arquivos][tmp_name]","100","100"), "5.jpg"));

Compartilhar este post


Link para o post
Compartilhar em outros sites

então kra.

 

você primeiro tem q enviar a sua foto para o servidor e depois tratala da forma que quiser.

 

veja como eu faço

 

eu envio a foto para 1 pasta

 

depois pego essa foto no servidor e trabalho em cima dela mudando o tamanho.

 

$foto1 = $_FILES["logomarca"]["tmp_name"];$foto1_name = $newmane."01.jpg";$foto1_type= $_FILES["logomarca"]["type"];if ((empty($foto1))AND(empty($foto1_type))){	$foto1="semfoto.jpg";}else{	$q_pic=$q_pic+1;}$foto2 = $_FILES["faixada"]["tmp_name"];$foto2_name = $newmane."02.jpg";$foto2_type = $_FILES["faixada"]["type"];if ((empty($foto2))AND(empty($foto2_type))){	$foto2_name="semfoto.jpg";}else{	$q_pic=$q_pic+1;}$foto3 = $_FILES["baixada"]["tmp_name"];$foto3_name = $newmane."03.jpg";$foto3_type = $_FILES["baixada"]["type"];if ((empty($foto3))AND(empty($foto3_type))){	$foto3_name="semfoto.jpg";}else{	$q_pic=$q_pic+1;}//fim fotos// fim coleta de dados//array fotos$fotos=array($foto1,$foto2,$foto3);$fotos_n=array($foto1_name,$foto2_name,$foto3_name);$fotos_t=array($foto1_type,$foto2_type,$foto3_type);//fim array fotos$errors = "";for ($i=0;$i<$q_pic;$i++){	if(($fotos_t[$i] <> 'image/gif') AND ($fotos_t[$i]  <> 'image/pjpeg')){ /*verifica o tipo da imagem*/		$errors  = $errors."O tipo do arquivo <strong>$fotos_n[$i]</strong>, é inválido!<br>";	}else{		$v_foto=strtolower($fotos_n[$i]);		//$arquivo= "c:/arquivos de programas/easyphp1-7/www/emaximovel/sistema/pictures/$txt_tipo/$v_foto";		$arquivo="/www/comprecar2/public_html/imgSite/veiculos/carros/$v_foto";		//echo $arquivo;		if (file_exists($arquivo)){ /* verifica se o arquivo exite no diretorio*/			$errors = $errors."O arquivo <strong>$fotos_n[$i]</strong> já existe, favor renomeie o arquivo.<br>";		}else{			copy($fotos[$i],$arquivo);			$nivelloco = $_COOKIE["nivel"];			if($nivelloco =="3"){						$imagem = "/www/comprecar2/public_html/imgSite/veiculos/carros/".$v_foto;			//echo $imagem."<br>";			//$logo = "../img/logo_b.gif";				//DEFINE OS PARÂMETROS DA MINIATURA			$largura = 649;			$altura = 487; 				//NOME DO ARQUIVO DA MINIATURA			$imagem_gerada = explode(".", $imagem);			$imagem_gerada = $imagem_gerada[0].".jpg";						//CRIA UMA NOVA IMAGEM			$imagem_orig = ImageCreateFromJPEG($imagem);			//$imagem_marca = ImageCreateFromGIF($logo); 				//LARGURA			$pontoX = ImagesX($imagem_orig);			//$pontoX1 = ImagesX($imagem_marca); 				//ALTURA			$pontoY = ImagesY($imagem_orig);			//$pontoY1 = ImagesY($imagem_marca); 				//CRIA O THUMBNAIL			$imagem_fin = ImageCreateTrueColor($largura, $altura);						//COPIA A IMAGEM ORIGINAL PARA DENTRO			ImageCopyResampled($imagem_fin, $imagem_orig, 0, 0, 0, 0, $largura+1, $altura+1, $pontoX, $pontoY);			//ImageCopyMerge($imagem_fin, $imagem_marca, 80, 150, 0, 0, $pontoX1, $pontoY1, 50); 					//SALVA A IMAGEM			ImageJPEG($imagem_fin, $imagem_gerada); 						//LIBERA A MEMÓRIA			ImageDestroy($imagem_orig);			//ImageDestroy($imagem_fin);			}else{			//não faz nada			}		}	}		}

Compartilhar este post


Link para o post
Compartilhar em outros sites

vina, Esse seu script se eu não me engano ele está fazendo o upload da foto "pura", após o upload ele pega a foto e edita ela e salva denovo?isso não carrega seu script?Oque eu quero fazer com o meu é:o cliente envia a foto multiplas fotos do tamanho q elas forem, ao enviar o sistema trabalha elas e trata elas, para quando eu chamar la na frente para serem exibidas as fotos ele ja venha miniaturas e em tamanhos corretos, para não sobrecarregar a navegação do usuario e ter q tratalas na hora.Vlw.

Compartilhar este post


Link para o post
Compartilhar em outros sites

então vamos láme passa o seu codigo no meu e-mail ae eu testo ele aqui e tento achar um soluçãovinamsn@gmail.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

então vamos láme passa o seu codigo no meu e-mail ae eu testo ele aqui e tento achar um soluçãovinamsn@gmail.com

Enviado,Se alguem mais souber ai alguma solução ai pode falar pq eu to desesperado...=P

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ótimo ;)

 

Consegui gerar as miniaturas.. Vlw ai _vina pela ajuda...

 

Agora estou com um outro problema que eu imaginava q iria ser o mais facil...

 

Enviar multiplos arquivos por upload...

 

Meu script de envio está assim :

$arquivo_tmp = $_FILES['arquivos']['tmp_name'];$dir = "C:\Arquivos de programas/xampp/htdocs";$arquivo = imagejpeg(reduz_img($_FILES['arquivos']['name'],"120","120"), "5.jpg",100);$up = move_uploaded_file($arquivo_tmp,$dir.$arquivo);if($up == TRUE){echo "Enviado";}else{echo "Erro";}
para envir multiplos arquivos tirando que eu tenho q colocar os nomes dos arquivos como arquivos[]

 

meu for ficaria assim:

$dir = "C:\Arquivos de programas/xampp/htdocs";$arquivos = $_FILES['arquivos'];for($i=0;$i<sizeof($arquivos);$i++){  if(!empty($arquivos[$indice]) && is_file($arquivos[$indice])){  $arquivo_tmp = $arquivos[$indice]['tmp_name'];  $arquivo = imagejpeg(reduz_img($arquivos[$indice]['name'],"120","120"), "$indice.jpg",100);  $up = move_uploaded_file($arquivo_tmp,$dir.$arquivo);  }}if($up==TRUE){echo "Enviado";}else{echo "Erro";}

No meu ver eu fiz certo, mas ao ver do meu PHP ele está errado :P

 

Alguem poderia me ajudar?

Denovo? :unsure:

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

[EDITADO] Logo Abaixo

 

Bom Dia Galera,

Estou denovo aqui para tirar mais uma dúvida,

Ja consegui fazer o sistema funcionar como eu queria. Agora ta acontecendo um problema aqui que eu não to conseguindo entender...

 

Se meus arquivos estão na pasta raiz do servidor(htdocs) ele funciona perfeitamente, gera as thumbnails. Porém se eu colocar os arquivos na pasta do sitema (htdocs/projeto_info/painel) ele não está funcionando, o script está gerando a img de erro.

 

Ele so gera essa imagem quando não foi passado nenhum arquivo pra função.

 

Segue os trechos do código:

 

função.php

<?phpfunction reduz_img ($imagem, $l, $a){  define(MAX_WIDTH, $l);  define(MAX_HEIGHT, $a);  $image_file = str_replace('..', '', $imagem);  $image_path = $image_file;  #Carrega a imagem  $img = null;  $extensao = strtolower(end(explode('.', $image_path)));  if ($extensao == 'jpg' || $extensao == 'jpeg') {	  $img = @imagecreatefromjpeg($image_path);  } else if ($extensao == 'png') {	  $img = @imagecreatefrompng($image_path);// Se a versão do GD incluir suporte a GIF, mostra...  } else if ($extensao == 'gif') {	  $img = @imagecreatefromgif($image_path);  }else{	 echo "So pode ser utilizado imagens no formato JPG, GIF ou PNG.";  }  if ($img) {	 $w = imagesx($img);	 $h = imagesy($img);	 $scale = min(MAX_WIDTH/$w, MAX_HEIGHT/$h);	 if($scale <1){		$new_w = floor($scale*$w);		$new_h = floor($scale*$h);		  //Criando a Imagem temporaria		$tmp_img = imagecreatetruecolor($new_w, $new_h);// copia e resize a imagem velha na nova		imagecopyresampled($tmp_img, $img, 0, 0, 0, 0,						 $new_w, $new_h, $w, $h);		imagedestroy($img);						 $img = $tmp_img;	 }  }//Criando uma imagem de erro se necesario...if (!$img) {	$img = imagecreate(MAX_WIDTH, MAX_HEIGHT);	imagecolorallocate($img, 204, 204, 204);	$c = imagecolorallocate($img, 153, 153, 153);	$c1 = imagecolorallocate($img, 0, 0, 0);	imageline($img, 0, 0, MAX_WIDTH, MAX_HEIGHT, $c);	imageline($img, MAX_WIDTH, 0, 0, MAX_HEIGHT, $c);	imagestring($img, 2, 12, 55, 'erro ao carregar imagem', $c1);}//Mostrando a imagem..return $img;}$dir   = $DOCUMENT_ROOT;$fotos = $_FILES['arquivos'];for($i = 0; $i < sizeof($fotos); $i++){  $nome	=	$fotos['name'][$i];  $tamanho =	$fotos['size'][$i];  $tipo	=	$fotos['type'][$i];  $tmpname =	$fotos['tmp_name'][$i];  if($tamanho > 0 && strlen($nome) > 1){	 if(preg_match('/^image\/(jpeg|jpg)$/',  $tipo)){		  $arquivo   = imagejpeg(reduz_img($nome,"200","200"), "$i.jpg",100);		  $up		= move_uploaded_file($tmpname,$dir.$arquivo);	 }  }}if($up == TRUE){echo "Enviado";}else{echo "Erro";}?>
Ja tentei colocar o $dir como

$dir = $DOCUMENT_ROOT."/projeto_info/painel";

 

Porém o problema ainda continua :(

Ele está gerando uma imagem que é gerado pela função quando não é passado nenhum imagem para a função.

 

Alguem sabe oque possa ser?

 

 

 

////////////////// EDITADO ///////////////////

 

Ja descobri o porque ele está somente funcionando na pasta raiz.

Porque os uploads q eu estou fazendo são das imgs que estão na mesma pasta dos arquivos ou seja.. na minha pasta tem:

 

img1.jpg

img2.jpg

funcao.php

form.php

 

Eu pego no formulario e mando os arquivos para a funcao.php

 

Na funcao.php tem está linha:

$arquivo   = imagejpeg(reduz_img($nome,"200","200"), "$i.jpg",100);
A Variavel $nome está vindo com o nome dos arquivos, ou seja, minha função está reduzindo a img.jpg que está no seu mesmo diretorio, está fazendo mesma coisa como se eu apenas indicasse o nome para ele pegar no endereço local,

Porém não é isso que eu quero :(

 

Eu quero poder enviar arquivos tratalos e fazer o UPLOAD, não fazer o upload tratar e fazer upload do tratado...

 

Alguem sabe como eu resolvo isso?

tentei trocar por $tmparquivo mas não resolveu =(

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.