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

Upload com thumbnmail


Carlos Rocha

Pergunta

Ola pessoal.

Mais uma vez preciso de ajuda.

Estou com o códigdo abaixo de Upload com thumbnmail.

Esta funcionando porem tem alguns erros que não estou conseguindo tirar e estou a pedir ajuda.

São eles:

1) Quando a imagem é jpg ou jpeg, faz o upload e gera o thumbmail (miniatura) certinho.

2) Quando a imagem é gif, faz o upload e não gera o thumbmail (miniatura) e diz que a funçao imagegif não tem permissão de escrita na pasta.

Warning: imagegif() [function.imagegif]: Unable to open 'teste_upload/mini/' for writing: Is a directory in /home/dinamica/public_html/teste_upload/Multiplos_Uploads.php on line 92
3) Quando a imagem é png, não faz e diz que o arquivo é invalido (mensagem do site, não do php).
O arquivo 1 não é um arquivo válido.
4) Quando a imagem é bmp, faz o upload e não gera o thumbmail (miniatura) informando o erro abaixo.
Warning: imagecreatefromwbmp() [function.imagecreatefromwbmp]: 'teste_upload/normal/cão_latindo.77579dfd069adcb618aeabbd3735dc48.bmp' is not a valid WBMP file in /home/dinamica/public_html/teste_upload/Multiplos_Uploads.php on line 72
Será que não há uma função que cria thumbnail(miniaturas) A partir de qualquer extensão (Jpeg, png, gif)? Tipo, a imagecreatefromjpeg só cria a partir de jpg, a imagecreatefromgif só cria a partir de gif. Existe ua função que cria thumbnail(miniaturas) A partir de qualquer extensão (Jpeg, png, gif)? Eis o código:
<b>Envio das fotos</b><br />

<form action="Multiplos_Uploads.php" method="post"  enctype="multipart/form-data">
<input type="file" name="fotos[]"><br />
<input type="file" name="fotos[]"><br />
<input type="file" name="fotos[]"><br />
<input type="submit" value="OK"/>
</form>

<?
$dir="teste_upload/normal/";
$dir_mini="teste_upload/mini/";
$Fotos = $_FILES['fotos'];
//$Fotos = isset($_FILES["fotos"]) ? $_FILES["fotos"] : FALSE;
for($i = 0; $i < sizeof($Fotos['name']); $i++){
    
    $Nome    = $Fotos['name'][$i];
    $Tamanho = $Fotos['size'][$i];
    $Tipo    = $Fotos['type'][$i];
    $Tmpname = $Fotos['tmp_name'][$i];
    
    if (!$Nome) { 
                  echo 'Você não enviou nada na posição' . ($i+1) . '<br/>';
                 }
    else         {             
                    if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $Tipo))
                            {
                    
                            echo 'O arquivo ' . ($i+1) . ' não é um arquivo válido.<br/>';
                                    
                                    // Faz contagem de enviada com sucesso
                                    $Conta++;
                            }
                    else    {    
                    
                                // Pega extensão do arquivo
                                preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $Nome, $ext);
                                
                                   //  Retira a extensao do nome do arquivo
                                $nome_sem_extensao = $Nome;
                                $nome_sem_extensao = basename ($nome_sem_extensao,".gif");
                                $nome_sem_extensao = basename ($nome_sem_extensao,".jpeg");
                                $nome_sem_extensao = basename ($nome_sem_extensao,".jpg");
                                $nome_sem_extensao = basename ($nome_sem_extensao,".bmp");
                                $nome_sem_extensao = basename ($nome_sem_extensao,".png");
                                
                                  //  Retira espaços em branco do nome do arquivo
                                $nome_banco = str_replace(" ","_",$nome_sem_extensao);
                                
                                        //Gera um nome único para a imagem
                                $imagem_nome = $nome_banco . "." . md5(uniqid(time())) . "." . $ext[1];

                                         //Diretórios de Gravação das imagens
                                $Caminho = $dir . $imagem_nome;
                                $Caminho_mini = $dir_mini . $imagem_nome;    

        
                                if(move_uploaded_file($Tmpname, $Caminho))            
                                {
                                    echo 'Foto ' . ($i+1) . ' enviada.<br/>';
                                    // Faz contagem de enviada com sucesso
                                   $Conta++;
                                    ///cria a miniatura e faz io move_uploaded_file
                                                      
                                      //IMAGEM A SER ABERTA
                                      $imagem = $Caminho; //Nesse momento, o upload já foi feito e o arquivo temporario apagado
                                      
                                      //CRIA UMA NOVA IMAGEM
                                      if ($ext[1] =="jpg") { $imagem_orig = imagecreatefromjpeg($imagem); }
                                      else if ($ext[1] =="jpeg") { $imagem_orig = imagecreatefromjpeg($imagem); }
                                      else if ($ext[1] =="gif") { $imagem_orig = imagecreatefromgif($imagem); }
                                      else if ($ext[1] =="bmp") { $imagem_orig = imagecreatefromwbmp($imagem); }
                                      else if ($ext[1] =="png") { $imagem_orig = imagecreatefrompng($imagem); }
                                      //LARGURA
                                      $pontoX = ImagesX($imagem_orig);
                                      //ALTURA
                                      $pontoY = ImagesY($imagem_orig); 
                                      
                                      //DEFINE OS PARÂMETROS DA MINIATURA
                                      $largura = 150;
                                      $altura = ($pontoY * $largura) / $pontoX;
                                      
                                      //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); 
                                      
                                      //SALVA A IMAGEM
                                      if ($ext[1] =="jpg") { imagejpeg($imagem_fin, $dir_mini ,100);  }
                                      else if ($ext[1] =="jpeg") { imagejpeg($imagem_fin, $dir_mini ,100);  }
                                      else if ($ext[1] =="gif") { imagegif($imagem_fin, $dir_mini ,100);  }
                                      else if ($ext[1] =="bmp") { imagewbmp($imagem_fin, $dir_mini ,100);  }
                                      else if ($ext[1] =="png") { imagepng($imagem_fin, $dir_mini ,100); }
                                      
                                      
                                      //LIBERA A MEMÓRIA
                                      imagedestroy($imagem_orig);
                                      imagedestroy($imagem_fin);

                                  }            
                                  else // Erro no envio
                                  {
                                      echo 'Não foi possível enviar a foto' . ($i+1) . '<br/>';
                                  }
                            }
                  }
                                          } //FIM DO FOR
?>

Como posso arrumar isso?

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
Ola pessoal.

Mais uma vez preciso de ajuda.

Estou com o códigdo abaixo de Upload com thumbnmail.

Esta funcionando porem tem alguns erros que não estou conseguindo tirar e estou a pedir ajuda.

São eles:

1) Quando a imagem é jpg ou jpeg, faz o upload e gera o thumbmail (miniatura) certinho.

2) Quando a imagem é gif, faz o upload e não gera o thumbmail (miniatura) e diz que a funçao imagegif não tem permissão de escrita na pasta.

Warning: imagegif() [function.imagegif]: Unable to open 'teste_upload/mini/' for writing: Is a directory in /home/dinamica/public_html/teste_upload/Multiplos_Uploads.php on line 92
3) Quando a imagem é png, não faz e diz que o arquivo é invalido (mensagem do site, não do php).
O arquivo 1 não é um arquivo válido.
4) Quando a imagem é bmp, faz o upload e não gera o thumbmail (miniatura) informando o erro abaixo.
Warning: imagecreatefromwbmp() [function.imagecreatefromwbmp]: 'teste_upload/normal/cão_latindo.77579dfd069adcb618aeabbd3735dc48.bmp' is not a valid WBMP file in /home/dinamica/public_html/teste_upload/Multiplos_Uploads.php on line 72
Será que não há uma função que cria thumbnail(miniaturas) A partir de qualquer extensão (Jpeg, png, gif)? Tipo, a imagecreatefromjpeg só cria a partir de jpg, a imagecreatefromgif só cria a partir de gif. Existe ua função que cria thumbnail(miniaturas) A partir de qualquer extensão (Jpeg, png, gif)? Eis o código:
<b>Envio das fotos</b><br />

<form action="Multiplos_Uploads.php" method="post"  enctype="multipart/form-data">
<input type="file" name="fotos[]"><br />
<input type="file" name="fotos[]"><br />
<input type="file" name="fotos[]"><br />
<input type="submit" value="OK"/>
</form>

<?
$dir="teste_upload/normal/";
$dir_mini="teste_upload/mini/";
$Fotos = $_FILES['fotos'];
//$Fotos = isset($_FILES["fotos"]) ? $_FILES["fotos"] : FALSE;
for($i = 0; $i < sizeof($Fotos['name']); $i++){
    
    $Nome    = $Fotos['name'][$i];
    $Tamanho = $Fotos['size'][$i];
    $Tipo    = $Fotos['type'][$i];
    $Tmpname = $Fotos['tmp_name'][$i];
    
    if (!$Nome) { 
                  echo 'Você não enviou nada na posição' . ($i+1) . '<br/>';
                 }
    else         {             
                    if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $Tipo))
                            {
                    
                            echo 'O arquivo ' . ($i+1) . ' não é um arquivo válido.<br/>';
                                    
                                    // Faz contagem de enviada com sucesso
                                    $Conta++;
                            }
                    else    {    
                    
                                // Pega extensão do arquivo
                                preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $Nome, $ext);
                                
                                   //  Retira a extensao do nome do arquivo
                                $nome_sem_extensao = $Nome;
                                $nome_sem_extensao = basename ($nome_sem_extensao,".gif");
                                $nome_sem_extensao = basename ($nome_sem_extensao,".jpeg");
                                $nome_sem_extensao = basename ($nome_sem_extensao,".jpg");
                                $nome_sem_extensao = basename ($nome_sem_extensao,".bmp");
                                $nome_sem_extensao = basename ($nome_sem_extensao,".png");
                                
                                  //  Retira espaços em branco do nome do arquivo
                                $nome_banco = str_replace(" ","_",$nome_sem_extensao);
                                
                                        //Gera um nome único para a imagem
                                $imagem_nome = $nome_banco . "." . md5(uniqid(time())) . "." . $ext[1];

                                         //Diretórios de Gravação das imagens
                                $Caminho = $dir . $imagem_nome;
                                $Caminho_mini = $dir_mini . $imagem_nome;    

        
                                if(move_uploaded_file($Tmpname, $Caminho))            
                                {
                                    echo 'Foto ' . ($i+1) . ' enviada.<br/>';
                                    // Faz contagem de enviada com sucesso
                                   $Conta++;
                                    ///cria a miniatura e faz io move_uploaded_file
                                                      
                                      //IMAGEM A SER ABERTA
                                      $imagem = $Caminho; //Nesse momento, o upload já foi feito e o arquivo temporario apagado
                                      
                                      //CRIA UMA NOVA IMAGEM
                                      if ($ext[1] =="jpg") { $imagem_orig = imagecreatefromjpeg($imagem); }
                                      else if ($ext[1] =="jpeg") { $imagem_orig = imagecreatefromjpeg($imagem); }
                                      else if ($ext[1] =="gif") { $imagem_orig = imagecreatefromgif($imagem); }
                                      else if ($ext[1] =="bmp") { $imagem_orig = imagecreatefromwbmp($imagem); }
                                      else if ($ext[1] =="png") { $imagem_orig = imagecreatefrompng($imagem); }
                                      //LARGURA
                                      $pontoX = ImagesX($imagem_orig);
                                      //ALTURA
                                      $pontoY = ImagesY($imagem_orig); 
                                      
                                      //DEFINE OS PARÂMETROS DA MINIATURA
                                      $largura = 150;
                                      $altura = ($pontoY * $largura) / $pontoX;
                                      
                                      //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); 
                                      
                                      //SALVA A IMAGEM
                                      if ($ext[1] =="jpg") { imagejpeg($imagem_fin, $dir_mini ,100);  }
                                      else if ($ext[1] =="jpeg") { imagejpeg($imagem_fin, $dir_mini ,100);  }
                                      else if ($ext[1] =="gif") { imagegif($imagem_fin, $dir_mini ,100);  }
                                      else if ($ext[1] =="bmp") { imagewbmp($imagem_fin, $dir_mini ,100);  }
                                      else if ($ext[1] =="png") { imagepng($imagem_fin, $dir_mini ,100); }
                                      
                                      
                                      //LIBERA A MEMÓRIA
                                      imagedestroy($imagem_orig);
                                      imagedestroy($imagem_fin);

                                  }            
                                  else // Erro no envio
                                  {
                                      echo 'Não foi possível enviar a foto' . ($i+1) . '<br/>';
                                  }
                            }
                  }
                                          } //FIM DO FOR
?>

Como posso arrumar isso?

Você já verificou se a pasta que será gravada as imagens gif está com permisao 777?

tem a classe m2brimagem que é muito boa mas esta no estagio inicial e não da suporte para gif pelo menos não até quando eu a usava pois faz algum tempo que não uso e não procurei saber de seu progresso até mais

Link para o comentário
Compartilhar em outros sites

  • 0

Não, a permissão não é 777.

Mas, asa figuras jpg e jpeg vão normal.

Inclusive, as imagens em tamanho normal das .gif são uplodeadas normalmente. Apenas s miniaturas não são gravadas por falta de permissão.

Dai "penso" que pode não ser problema nas pastas.

Mas, e o caso das png que são barradas no ergi?

Link para o comentário
Compartilhar em outros sites

  • 0

Primeiramente tenha certerza que o diretorio mini está com permisão de escrita, depois verifique as configurações do PHP.ini e tente rodar com outra versão do PHP e faça um teste isolado com as funções que estão dando problema.

Link para o comentário
Compartilhar em outros sites

  • 0

Sabe, olhando com mais atenção descobri que o patch para a fuinçao imagegif estavba trocado.

Arrumei e deui certo.

Porem, agora estou com um outro problema. É que a função imagegif esta gravando certo a imagem miniatura mas esta gravando com, fundo preto.;

Nãoe estou sabebndo contornar esa situação.;

Obs.: a fugura grava direito com o desenmho mas no fundo esta vindo preto e não o fundo da imagem original.

Detalhe: parece que na criação da miniatura, a parte do frundo da original não esta sendo enviada para a miniatura.

com,ko sai disso?

segiue código

<b>Envio das fotos</b><br />

<form action="Multiplos_Uploads.php" method="post"  enctype="multipart/form-data">
<input type="file" name="fotos[]"><br />
<input type="file" name="fotos[]"><br />
<input type="file" name="fotos[]"><br />
<input type="submit" value="OK"/>
</form>

<?
$dir="teste_upload/normal/";
$dir_mini="teste_upload/mini/";
$Fotos = $_FILES['fotos'];
//$Fotos = isset($_FILES["fotos"]) ? $_FILES["fotos"] : FALSE;
for($i = 0; $i < sizeof($Fotos['name']); $i++){
    
    $Nome    = $Fotos['name'][$i];
    $Tamanho = $Fotos['size'][$i];
    $Tipo    = $Fotos['type'][$i];
    $Tmpname = $Fotos['tmp_name'][$i];
    
    if (!$Nome) { 
                  echo 'Você não enviou nada na posição' . ($i+1) . '<br/>';
                 }
    else         {             
                    if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $Tipo))
                            {
                    
                            echo 'O arquivo ' . ($i+1) . ' não é um arquivo válido.<br/>';
                                    
                                    // Faz contagem de enviada com sucesso
                                    $Conta++;
                            }
                    else    {    
                    
                                // Pega extensão do arquivo
                                preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $Nome, $ext);
                                
                                   //  Retira a extensao do nome do arquivo
                                $nome_sem_extensao = $Nome;
                                $nome_sem_extensao = basename ($nome_sem_extensao,".gif");
                                $nome_sem_extensao = basename ($nome_sem_extensao,".jpeg");
                                $nome_sem_extensao = basename ($nome_sem_extensao,".jpg");
                                $nome_sem_extensao = basename ($nome_sem_extensao,".bmp");
                                $nome_sem_extensao = basename ($nome_sem_extensao,".png");
                                
                                  //  Retira espaços em branco do nome do arquivo
                                $nome_banco = str_replace(" ","_",$nome_sem_extensao);
                                
                                        //Gera um nome único para a imagem
                                $imagem_nome = $nome_banco . "." . md5(uniqid(time())) . "." . $ext[1];

                                         //Diretórios de Gravação das imagens
                                $Caminho = $dir . $imagem_nome;
                                $Caminho_mini = $dir_mini . $imagem_nome;    

        
                                if(move_uploaded_file($Tmpname, $Caminho))            
                                {
                                    echo 'Foto ' . ($i+1) . ' enviada.<br/>';
                                    // Faz contagem de enviada com sucesso
                                   $Conta++;
                                    ///cria a miniatura e faz io move_uploaded_file
                                                      
                                      //IMAGEM A SER ABERTA
                                      $imagem = $Caminho; //Nesse momento, o upload já foi feito e o arquivo temporario apagado
                                      
                                      //CRIA UMA NOVA IMAGEM
                                      if ($ext[1] =="jpg") { $imagem_orig = imagecreatefromjpeg($imagem); }
                                      else if ($ext[1] =="jpeg") { $imagem_orig = imagecreatefromjpeg($imagem); }
                                      else if ($ext[1] =="gif") { $imagem_orig = imagecreatefromgif($imagem); }
                                      else if ($ext[1] =="bmp") { $imagem_orig = imagecreatefromwbmp($imagem); }
                                      else if ($ext[1] =="png") { $imagem_orig = imagecreatefrompng($imagem); }
                                      //LARGURA
                                      $pontoX = ImagesX($imagem_orig);
                                      //ALTURA
                                      $pontoY = ImagesY($imagem_orig); 
                                      
                                      //DEFINE OS PARÂMETROS DA MINIATURA
                                      $largura = 150;
                                      $altura = ($pontoY * $largura) / $pontoX;
                                      
                                      //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); 
                                      
                                      //SALVA A IMAGEM
                                      if ($ext[1] =="jpg") { imagejpeg($imagem_fin, $Caminho_mini ,100);  }
                                      else if ($ext[1] =="jpeg") { imagejpeg($imagem_fin, $Caminho_mini ,100);  }
                                      else if ($ext[1] =="gif") { imagegif($imagem_fin, $Caminho_mini ,100);  }
                                      else if ($ext[1] =="bmp") { imagewbmp($imagem_fin, $Caminho_mini ,100);  }
                                      else if ($ext[1] =="png") { imagepng($imagem_fin, $Caminho_mini ,100); }
                                      
                                      
                                      //LIBERA A MEMÓRIA
                                      imagedestroy($imagem_orig);
                                      imagedestroy($imagem_fin);

                                  }            
                                  else // Erro no envio
                                  {
                                      echo 'Não foi possível enviar a foto' . ($i+1) . '<br/>';
                                  }
                            }
                  }
                                          } //FIM DO FOR
?>

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,2k
    • Posts
      651,9k
×
×
  • Criar Novo...