Sphinter 0 Denunciar post Postado Abril 25, 2007 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
Sphinter 0 Denunciar post Postado Abril 26, 2007 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 0 Denunciar post Postado Abril 26, 2007 usa o move_upload_file() você pega o "arquivo" e envia para a pasta no seu servidor =) Compartilhar este post Link para o post Compartilhar em outros sites
Sphinter 0 Denunciar post Postado Abril 26, 2007 _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
_vina 0 Denunciar post Postado Abril 26, 2007 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
Sphinter 0 Denunciar post Postado Abril 26, 2007 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
_vina 0 Denunciar post Postado Abril 26, 2007 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
Sphinter 0 Denunciar post Postado Abril 26, 2007 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 aeErro: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
_vina 0 Denunciar post Postado Abril 26, 2007 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
Sphinter 0 Denunciar post Postado Abril 26, 2007 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
_vina 0 Denunciar post Postado Abril 26, 2007 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
Sphinter 0 Denunciar post Postado Abril 26, 2007 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.comEnviado,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
Sphinter 0 Denunciar post Postado Abril 26, 2007 Ó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
Sphinter 0 Denunciar post Postado Abril 27, 2007 [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