Ir para conteúdo

Arquivado

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

guma

Upload + Redimencionar a Imagem..

Recommended Posts

Bom seguinte no meu serve esta limitado o "memory_limit" em 20M..Bom o problema é o seguinte dependendo da imagem o servidor não consegue compactar-la mas envia..Por exemplo tenho duas imagens de mesmo tamanho mais com largura e altura destintas uma funciona e a outra não.. Para aumentar o memory_limit usei esta funcao:

ini_set("memory_limit","64M");

Tu isto funciona LocalHost sem problema nenhum com nenhuma imagem..Ja tentei usar esta funcao:

set_time_limit(0);

E nada... Bom meu codigo de Enviou e Compactação..

function upImagemTemp ($imagem,$caminho,$nome){ ini_set("memory_limit","64M"); move_uploaded_file($imagem['tmp_name'],$caminho."/".$nome); compImagemNew($imagem,$caminho,$largMax,$altMax,$nome);}function compImagemNew($imagem,$caminho,$largMax,$altMax,$nome){ $ext = strtolower(end(explode('.', $imagem['name']))); $imagem_path = $caminho .'/'.$nome; $extensao = strtolower(end(explode('.', $imagem_path))); // verificando extenção para poder criar a miniatura if ($extensao == 'jpg' || $extensao == 'jpeg') { $img = imagecreatefromjpeg($imagem_path); } else if ($extensao == 'png') { $img = imagecreatefrompng($imagem_path); } else if ($extensao == 'gif') { $img = imagecreatefromgif($imagem_path); } // verifica se a imagem foi criada com sucesso if ($img) { $largura_atual = imagesx($img); $altura_atual = imagesy($img); $escala = min($largMax/$largura_atual, $altMax/$altura_atual); // encolhe a imagem se ela for maior que a altura e largura permitida if ($escala < 1) { #Imagem Grande if($escala){ $nova_largura = floor($escala*$largura_atual); $nova_altura = floor($escala*$altura_atual); $img_temp = imagecreatetruecolor($nova_largura, $nova_altura); imagecopyresampled ($img_temp, $img, 0, 0, 0, 0, $nova_largura, $nova_altura, $largura_atual, $altura_atual); if ($extensao == 'jpg' || $extensao == 'jpeg') { imagejpeg($img_temp, $imagem_path,100); } else if ($extensao == 'gif') { imagegif($img_temp, $imagem_path,100); } else if ($extensao == 'png') { imagepng($img_temp, $imagem_path,100); } } imagedestroy($img); } } }

Se alguem poder me ajudar de alguma forma tipo um comando q libere memoria ou algo assim...Fico no aguardo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com quais tipos de imagens deu esse problema?Enquanto estiver em desenvolvimento, define error_reporting com E_ALL e deixa também display_errors em On. Faz um novo teste assim e verifique se retorna algum warning ou notice. ;)[]sAnderson Mello

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com quais tipos de imagens deu esse problema?Enquanto estiver em desenvolvimento, define error_reporting com E_ALL e deixa também display_errors em On. Faz um novo teste assim e verifique se retorna algum warning ou notice. ;)[]sAnderson Mello

E ai velho,Link da Imagem Pois é os duas opções estao ativas...Como eu disse anteriormente ele envia tranquilo mais na hora de redimensionar a imagem ele nao faz.. e depende da imagem..É muito estranho pq tenho imagem de tamanho maior que esta q tu lhe enviando e funciona...Bom é isto.. se tiver algo q posso fazer agradeço..Abração ai velho fico no aguardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas qual erro que dá?não mostra nada?se naum da erro, faz um debug manual.vai colocando echo "ok1" ok2 ... ok3 nos ifs e ve por onde o script ta passando. para sabermos o que ta acontecendo ao certo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para fazer o teste online... So tem que se cadastrar mais isto é de menos porque é de graça :D

 

 

Acessem :

 

http://www.mercadovaledocai.com.br/index.php

 

 

Aviso que so funciona em Ie6.. Nao cheguei a testar no Ie7 e no Firefox da alguns erro de Javascript..

 

 

Abração ai gurizada

Compartilhar este post


Link para o post
Compartilhar em outros sites

guma, chegou a fazer o debug que o ScornInPC sugeriu?Verifique também quais são os valores das diretivas post_max_size e upload_max_size no servidor em que está hospedado. Mesmo a imagem sendo maior, pode estar ocupar um tamanho (espaço em disco) menor que outras imagens, devido à taxa de compactação adotada em cada arquivo.[]sAnderson Mello

Compartilhar este post


Link para o post
Compartilhar em outros sites

guma, chegou a fazer o debug que o ScornInPC sugeriu?Verifique também quais são os valores das diretivas post_max_size e upload_max_size no servidor em que está hospedado. Mesmo a imagem sendo maior, pode estar ocupar um tamanho (espaço em disco) menor que outras imagens, devido à taxa de compactação adotada em cada arquivo.[]sAnderson Mello

E ai velho..Fiz sim os testes ue o ScornInPC sugeriu!!!Sobre o post_max_size é de 35M e o upload_max_filesize é 35M tambem...São valores altos ate...A grande questão que eu nao consigo entender é por tem fotos de tamanha e dimensoes maiores que funciona e fotos do mesmo tamanho so q com dimensoes diferentes...Tipo limitei em 2 MB a foto.. Certo??Dai eu mando uma de 900 Kb por exemplo.. Dai tipo vai traquilo dai eu mando outra foto com menor tamanho so q com resolução diferente da de 900 Kb..Um exemplo de imagem q ele envia mais não consegue compactar é esta ai : tem 500Kbhttp://www.mercadovaledocai.com.br/imagens/3217_8572.jpgFico aguardo retorno ainda..Vou tentar estanciar meu "post_max_size" e "upload_max_filesize" para um tamanho superior como eu fiz no memory_limitcaso funcione eu posto aki novamente..Abração ai

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai pessoal não rolou eu instanciar post_max_size é de upload_max_filesize para um numero maior que 35MAlguem sabe qual outra forma eu tenho de fazer isto ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

guma, olhando novamente o seu código, como você está chamando a função upImagemTemp()?

Tem os parâmetros $largMax e $altMax, que não mostra onde estão sendo definidos. Ainda na função upImagemTemp, verificou se nas imagens que ocorre o erro se ela foi movida corretamente?

 

Experimenta colocar uma condição ali. Algo do tipo:

 

function upImagemTemp($imagem,$caminho,$nome) {	ini_set("memory_limit","64M");	if (move_uploaded_file($imagem['tmp_name'],$caminho."/".$nome)) {		compImagemNew($imagem,$caminho,$largMax,$altMax,$nome);	} else {		die("Erro: não foi possível enviar a imagem $nome para $caminho.");	}}

Assim você se certifica que a imagem foi enviada e movida, chamando a função de redimensionamento.

Faz um teste assim e posta o resultado ;)

 

[]s

Anderson Mello

Compartilhar este post


Link para o post
Compartilhar em outros sites

guma, olhando novamente o seu código, como você está chamando a função upImagemTemp()?Tem os parâmetros $largMax e $altMax, que não mostra onde estão sendo definidos. Ainda na função upImagemTemp, verificou se nas imagens que ocorre o erro se ela foi movida corretamente?Experimenta colocar uma condição ali. Algo do tipo:

function upImagemTemp($imagem,$caminho,$nome) {	ini_set("memory_limit","64M");	if (move_uploaded_file($imagem['tmp_name'],$caminho."/".$nome)) {		compImagemNew($imagem,$caminho,$largMax,$altMax,$nome);	} else {		die("Erro: não foi possível enviar a imagem $nome para $caminho.");	}}
Assim você se certifica que a imagem foi enviada e movida, chamando a função de redimensionamento.Faz um teste assim e posta o resultado ;)[]sAnderson Mello
Pois é velho.. O problema continua.. :(O grande problema é na hora compactar a imagem.. Enviar ele envia tranquilo.. mas na hora de compactar certas imagens como esta q postei ai no topico ele não funciona.Tipo meu site esta hospedado na plugin www.plugin.com.br a pasta tambem esta com Chmod 777 a grande dificuldade é na hora compactar..Antes tambem tinha deixado uma função dentro da outra mais não funcionava igual.. Dai separei por que pensava que era por causa do processo do PHP ou algo assim.. Ate usei o buffer e o flush para ver se funcionava mais nao funciona..Bom eras isto.. Fico ainda aguardo retorno do pessoal..Abração ai gurizada

Compartilhar este post


Link para o post
Compartilhar em outros sites

"Compactar" que você se refere é à redução da imagem? Então a imagem não está apenas sendo redimensionada, é isso?Se ele envia e move, não é problema na permissão da pasta.[]sAnderson Mello

Compartilhar este post


Link para o post
Compartilhar em outros sites

"Compactar" que você se refere é à redução da imagem? Então a imagem não está apenas sendo redimensionada, é isso?Se ele envia e move, não é problema na permissão da pasta.[]sAnderson Mello

Compactar é diminuir as dimensões da imagem!! me expressei mal a permissão da pasta esta tudo 7 pode fazer tudo..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Provavelmente o problema está na parte em que se calcula a escala.Posta a parte onde você define as variáveis com a largura e altura da imagem.[]sAnderson Mello

Compartilhar este post


Link para o post
Compartilhar em outros sites

Provavelmente o problema está na parte em que se calcula a escala.Posta a parte onde você define as variáveis com a largura e altura da imagem.[]sAnderson Mello

function compImagemNew($imagem,$caminho,$largMax,$altMax,$nome){$ext = strtolower(end(explode('.', $imagem['name'])));$imagem_path = $caminho .'/'.$nome;$extensao = strtolower(end(explode('.', $imagem_path)));// verificando extenção para poder criar a miniaturaif ($extensao == 'jpg' || $extensao == 'jpeg') {$img = imagecreatefromjpeg($imagem_path);} else if ($extensao == 'png') {$img = imagecreatefrompng($imagem_path);} else if ($extensao == 'gif') {$img = imagecreatefromgif($imagem_path);}// verifica se a imagem foi criada com sucessoif ($img) {$largura_atual = imagesx($img);$altura_atual = imagesy($img);$escala = min($largMax/$largura_atual, $altMax/$altura_atual);// encolhe a imagem se ela for maior que a altura e largura permitidaif ($escala < 1) {#Imagem Grandeif($escala){$nova_largura = floor($escala*$largura_atual);$nova_altura = floor($escala*$altura_atual);$img_temp = imagecreatetruecolor($nova_largura, $nova_altura);imagecopyresampled ($img_temp, $img, 0, 0, 0, 0, $nova_largura, $nova_altura, $largura_atual, $altura_atual);if ($extensao == 'jpg' || $extensao == 'jpeg') {imagejpeg($img_temp, $imagem_path,100);} else if ($extensao == 'gif') {imagegif($img_temp, $imagem_path,100);} else if ($extensao == 'png') {imagepng($img_temp, $imagem_path,100);}}imagedestroy($img);}}}

Compartilhar este post


Link para o post
Compartilhar em outros sites

function compImagemNew($imagem,$caminho,$largMax,$altMax,$nome)

Estes argumentos, onde você os define? $imagem, $caminho e $nome vi que vem da outra função. Mas e os limites?

 

[]s

Anderson Mello

Compartilhar este post


Link para o post
Compartilhar em outros sites

function compImagemNew($imagem,$caminho,$largMax,$altMax,$nome)
Estes argumentos, onde você os define? $imagem, $caminho e $nome vi que vem da outra função. Mas e os limites?[]sAnderson Mello
Este é o arquivo completo.. PHP exemplo.php

function compImagemNew($imagem,$caminho,$largMax,$altMax,$nome){ ini_set("memory_limit","94M"); ini_set("post_max_size","64M"); ini_set("upload_max_size","64M");// set_time_limit(0);// ob_end_clean(); // discard output buffer $ext = strtolower(end(explode('.', $imagem['name']))); $imagem_path = $caminho .'/'.$nome; $extensao = strtolower(end(explode('.', $imagem_path))); // verificando extenção para poder criar a miniatura if ($extensao == 'jpg' || $extensao == 'jpeg') { $img = imagecreatefromjpeg($imagem_path); } else if ($extensao == 'png') { $img = imagecreatefrompng($imagem_path); } else if ($extensao == 'gif') { $img = imagecreatefromgif($imagem_path); } // verifica se a imagem foi criada com sucesso if ($img) { $largura_atual = imagesx($img); $altura_atual = imagesy($img); $escala = min($largMax/$largura_atual, $altMax/$altura_atual); // encolhe a imagem se ela for maior que a altura e largura permitida if ($escala < 1) { #Imagem Grande if($escala){ $nova_largura = floor($escala*$largura_atual); $nova_altura = floor($escala*$altura_atual); $img_temp = imagecreatetruecolor($nova_largura, $nova_altura); imagecopyresampled ($img_temp, $img, 0, 0, 0, 0, $nova_largura, $nova_altura, $largura_atual, $altura_atual); if ($extensao == 'jpg' || $extensao == 'jpeg') { imagejpeg($img_temp, $imagem_path,100); } else if ($extensao == 'gif') { imagegif($img_temp, $imagem_path,100); } else if ($extensao == 'png') { imagepng($img_temp, $imagem_path,100); } } imagedestroy($img); } } }function upImagemTemp ($imagem,$caminho,$largMax,$altMax,$nome){ ini_set("memory_limit","64M");// move_uploaded_file($imagem['tmp_name'],$caminho."/".$nome); if (move_uploaded_file($imagem['tmp_name'],$caminho."/".$nome)) { $this->compImagemNew($imagem['tmp_name'],$caminho,$largMax,$altMax,$nome); } else { die("Erro: não foi possível enviar a imagem $nome para $caminho."); }} $caminho = "./imagens/"; $ext = strtolower(end(explode('.',$img[$i]['name']))); if (($img[$i]['size'] > $max_size) || !in_array($ext, $file_exts)){ die('<script> location.href = "erro.php" </script>'); } $nome = substr($id_user,0,2).rand(10, 99999).'_'.rand(10, 999).substr($_REQUEST['id_sub_cat'],0,2).'.'.$ext; $funcao->upImagemTemp ($_FILES['imagem'],$caminho,250,250,$nome);

Não entendi esta parte

Mas e os limites?

Flw abração ai

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sobre os limites eu me refiria aos argumentos $largMax e $altMax.Faz um debug no cálculo da escala ali, pra ver quais os valores retornados, tando na largura quanto na altura.[]sAnderson Mello

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sobre os limites eu me refiria aos argumentos $largMax e $altMax.Faz um debug no cálculo da escala ali, pra ver quais os valores retornados, tando na largura quanto na altura.[]sAnderson Mello

E ai tche ele ta calculando da seguinte forma..largura_atual> 3164altura_atual> 1728nova_largura> 175nova_altura> 95Era isto... Fico no aguardo do retorno..Abração ai

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ai anderson conseguiu ver pra mim ??Alguem sabe o que eu posso fazer para funcionar o meu script de upload??Abração ai gurizada

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.