Ir para conteúdo
Fórum Script Brasil
  • 0

Envio De Imagnes.


fsphp

Pergunta

Ontem eu coloquei um programinha na net para envio de imagens e coloquei cinco fotos nele sem problemas, agora fui lá para colocar mais algumas mas deu o seguinte erro:

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 1600 bytes) in

Alguém sabe o que significa e como resolver?

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

Hipóteses

Verifica com phpinfo() o "upload_max_filesize()" tamanho máximo do upload e veja se o arquivo q você esta tentando upar não é maior q isso, se for não dará pra você mander o arquivo a não ser que você aumente esse variável no php.ini, se estiver na web, você terá q falar com seu host.

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado pelos links mas, como você falou, também não encontrei nada.

Entrei em contato com meu servidor e eles disseram que deve ser no script e que este deve estar limitando o tamanho para até 1000 pixels!!!

Mas não é verdade pois coloquei um limite de 2593 pixels de largura e/ou altura.

Coloco abaixo o script que eu fiz para quem puder dar uma força.

Obrigado a todos.

<?php

set_time_limit (0);

$imagem = $_FILES['imagem']['name'];

$tam_imagem = $_FILES['imagem']['size'];

$arquivo_temporario = $_FILES['imagem']['tmp_name'];

$nome_imagem = "./".$_FILES['imagem']['name'];

if(file_exists($nome_imagem))

{

  echo "Imagem já existe.";

  exit;

}

$move_imagem = move_uploaded_file($_FILES['imagem']['tmp_name'], "./".$_FILES['imagem']['name']);

$tamanho_fixo = "N";

if(!file_exists($imagem))

{

  echo "Arquivo da imagem não encontrado";

  exit;

}

 

$arquivo_miniatura = explode('.', $imagem);

$arquivo_miniatura = $arquivo_miniatura[0]."_mini.jpg";

$img_origem = imagecreatefromjpeg($imagem);

$origem_x = imagesx($img_origem);

$origem_y = imagesy($img_origem);

//echo "$img_origem";

/////////////////// Processa os vários tamanhos de imagens ///////////////////

if($tamanho_fixo == "N");

{

  if($origem_x > $origem_y)

      {

        if($origem_x>1 && $origem_x<=640)

            {

            $x = intval($origem_x * 15/100);

            $y = intval($origem_y * 15/100);

            }

            elseif($origem_x>641 && $origem_x<=1024)

            {

            $x = intval($origem_x * 12/100);

            $y = intval($origem_y * 12/100);

            }

            elseif($origem_x>1025 && $origem_x<=1280)

            {

            $x = intval($origem_x * 8/100);

            $y = intval($origem_y * 8/100);

            }

            elseif($origem_x>1281 && $origem_x<=1472)

            {

            $x = intval($origem_x * 7/100);

            $y = intval($origem_y * 7/100);

            }

            elseif($origem_x>1475 && $origem_x<=1600)

            {

            $x = intval($origem_x * 6/100);

            $y = intval($origem_y * 6/100);

            }

            elseif($origem_x>1601 && $origem_x<=1795)

            {

            $x = intval($origem_x * 5/100);

            $y = intval($origem_y * 5/100);

            }

            elseif($origem_x>1796 && $origem_x<=2048)

            {

            $x = intval($origem_x * 4/100);

            $y = intval($origem_y * 4/100);

            }

            elseif($origem_x>2049 && $origem_x<=2592)

            {

            $x = intval($origem_x * 3/100);

            $y = intval($origem_y * 3/100);

            }

            elseif($origem_x>2593)

            {

            echo "<b>Imagem muito grande. Por favor, reduza o tamanho da mesma! Tamanho máximo 2.599 pixels.</b>";

            unlink("www.aikidosjc.com.br/dir_criado/".$_FILES['imagem']['name']);

            exit;

            }

      }

      elseif($origem_y > $origem_x)

      {

        if($origem_y>1 && $origem_y<=640)

            {

            $x = intval($origem_x * 15/100);

            $y = intval($origem_y * 15/100);

            }

            elseif($origem_y>641 && $origem_y<=1024)

            {

            $x = intval($origem_x * 12/100);

            $y = intval($origem_y * 12/100);

            }

            elseif($origem_y>1025 && $origem_y<=1280)

            {

            $x = intval($origem_x * 8/100);

            $y = intval($origem_y * 8/100);

            }

            elseif($origem_y>1281 && $origem_y<=1472)

            {

            $x = intval($origem_x * 7/100);

            $y = intval($origem_y * 7/100);

            }

            elseif($origem_y>1475 && $origem_y<=1600)

            {

            $x = intval($origem_x * 6/100);

            $y = intval($origem_y * 6/100);

            }

            elseif($origem_y>1601 && $origem_y<=1795)

            {

            $x = intval($origem_x * 5/100);

            $y = intval($origem_y * 5/100);

            }

            elseif($origem_y>1796 && $origem_y<=2048)

            {

            $x = intval($origem_x * 4/100);

            $y = intval($origem_y * 4/100);

            }

            elseif($origem_y>2049 && $origem_y<=2592)

            {

            $x = intval($origem_x * 3/100);

            $y = intval($origem_y * 3/100);

            }

            elseif($origem_y>2593)

            {

            echo "<b>Imagem muito grande. Por favor, reduza o tamanho da mesma! Tamanho máximo aceito 2.599 pixels</b>";

            unlink("www.aikidosjc.com.br/dir_criado/".$_FILES['imagem']['name']);

            exit;

            }

      }

}

//////////////////////////////////////////////////////////////////

     

$img_final = ImageCreateTrueColor($x, $y);

ImageCopyResampled($img_final, $img_origem, 0, 0, 0, 0, $x+1, $y+1, $origem_x, $origem_y);

ImageJPEG($img_final, $arquivo_miniatura);

//echo "$img_final";

// ImageDestroy($img_origem);

ImageDestroy($img_final);

//////////////////////// Gera a segunda imagem /////////////////////////////

$imagem_media = explode('.', $imagem);

$imagem_media = $imagem_media[0]."_med.jpg";

$img_origem = imagecreatefromjpeg($imagem);

$origem_x = imagesx($img_origem);

$origem_y = imagesy($img_origem);

//echo "$img_origem";

/////////////////// Processa os vários tamanhos de imagens ///////////////////

if($tamanho_fixo == "N");

{

  if($origem_x > $origem_y)

      {

        if($origem_x>1 && $origem_x<=640)

            {

            $x = intval($origem_x * 70/100);

            $y = intval($origem_y * 70/100);

            }

            elseif($origem_x>641 && $origem_x<=1024)

            {

            $x = intval($origem_x * 43/100);

            $y = intval($origem_y * 43/100);

            }

            elseif($origem_x>1025 && $origem_x<=1280)

            {

            $x = intval($origem_x * 35/100);

            $y = intval($origem_y * 35/100);

            }

            elseif($origem_x>1281 && $origem_x<=1472)

            {

            $x = intval($origem_x * 30/100);

            $y = intval($origem_y * 30/100);

            }

            elseif($origem_x>1475 && $origem_x<=1600)

            {

            $x = intval($origem_x * 27/100);

            $y = intval($origem_y * 27/100);

            }

            elseif($origem_x>1601 && $origem_x<=1795)

            {

            $x = intval($origem_x * 25/100);

            $y = intval($origem_y * 25/100);

            }

            elseif($origem_x>1796 && $origem_x<=2048)

            {

            $x = intval($origem_x * 23/100);

            $y = intval($origem_y * 23/100);

            }

            elseif($origem_x>2049 && $origem_x<=2592)

            {

            $x = intval($origem_x * 20/100);

            $y = intval($origem_y * 20/100);

            }

            elseif($origem_x>2593)

            {

            echo "<b>Imagem muito grande. Por favor, reduza o tamanho da mesma! Tamanho máximo aceito é de 2.599 pixels</b>";

            unlink("www.aikdiosjc.com.br/dir_criado/".$_FILES['imagem']['name']);

            exit;

            }

      }

      elseif($origem_y > $origem_x)

      {

        if($origem_y>1 && $origem_y<=640)

            {

            $x = intval($origem_x * 70/100);

            $y = intval($origem_y * 70/100);

            }

            elseif($origem_y>641 && $origem_y<=1024)

            {

            $x = intval($origem_x * 43/100);

            $y = intval($origem_y * 43/100);

            }

            elseif($origem_y>1025 && $origem_y<=1280)

            {

            $x = intval($origem_x * 35/100);

            $y = intval($origem_y * 35/100);

            }

            elseif($origem_y>1281 && $origem_y<=1472)

            {

            $x = intval($origem_x * 30/100);

            $y = intval($origem_y * 30/100);

            }

            elseif($origem_y>1475 && $origem_y<=1600)

            {

            $x = intval($origem_x * 27/100);

            $y = intval($origem_y * 27/100);

            }

            elseif($origem_y>1601 && $origem_y<=1795)

            {

            $x = intval($origem_x * 25/100);

            $y = intval($origem_y * 25/100);

            }

            elseif($origem_y>1796 && $origem_y<=2048)

            {

            $x = intval($origem_x * 23/100);

            $y = intval($origem_y * 23/100);

            }

            elseif($origem_y>2049 && $origem_y<=2592)

            {

            $x = intval($origem_x * 20/100);

            $y = intval($origem_y * 20/100);

            }

            elseif($origem_y>2593)

            {

            echo "<b>Imagem muito grande. Por favor, reduza o tamanho da mesma! Tamanho máximo aceito é de 2.599 pixels.</b>";

            unlink("www.aikidosjc.com.br/dir_criado/".$_FILES['imagem']['name']);

            exit;

            }

      }

}

//--------------------------------------------------------------

$img_final_med = ImageCreateTrueColor($x, $y);

ImageCopyResampled($img_final_med, $img_origem, 0, 0, 0, 0, $x+1, $y+1, $origem_x, $origem_y);

ImageJPEG($img_final_med, $imagem_media);

//echo "$img_final";

ImageDestroy($img_origem);

ImageDestroy($img_final_med);

unlink("./".$_FILES['imagem']['name']);

///////////Fim da geraçao da segunda imagem /////////////////

?>

<html><head><title>Gera Arquivos de Fotos</title></head>

<body bgcolor="f0ffff">

<p align=center>

<?php

include "conecta_mysql.php";

$caminho = "http://www.muralcultural.com.br/hospedagem/michi_dojo/dir_criado";

$foto_endereco = "$caminho/$imagem";

$mini_endereco = "$caminho/$arquivo_miniatura";

$media_endereco = "$caminho/$imagem_media";

$insere = mysql_query("INSERT INTO foto_album (foto, mini, foto_endereco,

                      mini_endereco, media_endereco)

                      VALUES ('$imagem', '$arquivo_miniatura', '$foto_endereco',

                        '$mini_endereco', '$media_endereco')");

if(mysql_affected_rows() == 1)

{

  echo "<b>Fotos inseridas com sucesso!</b><br>";

}

else

  {

      echo "Não foi possível inserir as fotos no banco de dados<br>";

  }

//echo "<a href=\"$imagem\"><b>$imagem</b></a><br>";

//echo "<a href=\"$arquivo_miniatura\"><b>$arquivo_miniatura</b></a>";

?>

<p align="center"><a href="foto_visualizar_formatado.php"><b>VISUALIZAR FOTOS</b></a></p>

<p align="center"><a href="galeria_fotos.php"><b>ENVIAR OUTRA FOTO</b></a></p>

</body></html>

Editado por Error404
Link para o comentário
Compartilhar em outros sites

  • 0

Oi pessoal,

Meu servidor me falou que o erro que está dando é de memória disponível para processar a imagem pela função createimagefromjpeg. Alguém já viu isso, tem como resolver?

O erro apresentado é esse.

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 8192

bytes) on line 26

Como pode verificar ele indica uma falha de excesso de memória utilizada na função

imagecreatefromjpeg($imagem);

Cedemos no PHP o limite de 8 MB de memória.

No seu caso a função indicada precisa de mais do que isso para tratar uma imagem com um valor muito alto de pixels e por esse motivo ocorre o erro.

Infelizmente isso é causado pelo nosso limite que é proposto devido a segurança e a

compatilibade de configurações em nosso ambiente PHP.

sad.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Ah, cara, são as dimensões dela.

Olha... não sei se o seu servidor vai ficar muito feliz com essa minha dica, mas a diretiva que eu te disse, "memory_limit" é PHP_INI_ALL, ou seja, pode ser alterada em tempo de execução pelo seu próprio script... rolleyes.gif

Dê uma lida em:

· http://br.php.net/manual/pt_BR/function.ini-set.php

Posta aí o resultado, seja ele positivo ou negativo, ok? smile.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Puxa, essa função o Fabyo falou dela no meu outro tópico, achei ela interesante mas não tinha nenhum exemplo para usá-la e conhecer ela melhor.

Agora tenho... biggrin.gif

Vou modificar os scripts e depois eu posto o resultado.

Valeu Error404. wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Um OBS sobre o ini_set();

cuidado pois algums servidores desabilitão. O que eu uso LOCA WEB desabilita o ini_set();

Foi só um toque abraços...

Link para o comentário
Compartilhar em outros sites

  • 0

Valeu pelo toque dmetallica.

Coloquei a função ini_set(memory_limit, "12M") antes do processo da função createimagefromjpeg() e funcionou direitinho.

Obrigado Error404, agora já sei como funciona essa função. biggrin.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Pois é... acho que o ideal é falar com eles para que alterem esse valor para mim, para evitar problemas no futuro.

Coloquei um aviso no site dizendo que a largura ou altura máximos tem que ter até 1000 pixels.

Acho que assim fica melhor. smile.gif

Agora a função ini_set() rodou bem.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...