Ir para conteúdo

Arquivado

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

alexbecher

Upload de imagens GIFs animado com PHP

Recommended Posts

Pessoal bom dia,

 

Estou com uma aplicação que faz upload para meu site de imagens PNG, JPEG e GIF , porém quando faço o upload para o site de imagens GIFs com animação a imagem fica estática e com fundo preto!

 

Alguém pode me ajudar..

 

Abaixo segue minha classe que utilizo.

function reduz_imagem($img, $max_x, $max_y, $nome_foto, $extensaoo)
        {
                //pega o tamanho da imagem ($original_x, $original_y)
                list($width, $height) = getimagesize($img);
                $original_x = $width;
                $original_y = $height;
                // se a largura for maior que altura
                if($original_x > $original_y) {
                           $porcentagem = (100 * $max_x) / $original_x;   
                }
                else {
                           $porcentagem = (100 * $max_y) / $original_y;
                }
                
                $tamanho_x = $original_x * ($porcentagem / 100);
                $tamanho_y = $original_y * ($porcentagem / 100);
                
                $image_p = imagecreatetruecolor($tamanho_x, $tamanho_y);
                
                if($extensaoo == 'jpeg' || $extensaoo == 'jpg')
                {
                        if (function_exists('imagejpeg')) 
                        {
                                $image   = imagecreatefromjpeg($img);
                                imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height);
                                return imagejpeg($image_p, $nome_foto, 85);
                        }
                        else
                        {
                                echo('<script> alert("Sem suporte para este tipo de imagem - ' . $extensaoo  . ', falha no cadastro!!");  </script>');
                                return false;
                        }
                }
                else
                {
                if($extensaoo == 'png')
                {
                        if (function_exists('imagepng')) 
                        {
                                $image   = imagecreatefrompng($img);
                                imagealphablending($image_p, false);
                                imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height);
                                imagesavealpha($image_p, true);
                                return imagepng($image_p, $nome_foto);
                        }
                        else
                        {
                                echo('<script> alert("Sem suporte para este tipo de imagem - ' . $extensaoo  . ', falha no cadastro!!");  </script>');
                                return false;
                        }
                }
                else
                {
                if($extensaoo == 'gif')
                {      

                
                        if (function_exists('imagegif')) 
                        {
                        header('Content-Type: image/gif');

                        
                               
                                $image   = LoadGif($img);
                                imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height);
                                return imagegif($image_p,$nome_foto);
                        }
                          }
                }
                }               
        }//fim reduz_imagem


Eu agradeço vcs.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho então que o PHP não trabalha com GIFs animados, por isso ta acontecendo isso, acho q vc vai ter de mudar a biblioteca que está usando

Compartilhar este post


Link para o post
Compartilhar em outros sites

O PHP tem esses: http://php.net/manual/en/refs.utilspec.image.php

 

Não sei qual deles vai fazer o que você quer, pois não costumo trabalhar com isso. Mas procure no google sobre o tratamento de GIFs animados sem a perda da animação para saber qual vai lhe cair melhor.

 

Acho que esse vai lhe servir: http://php.net/manual/en/book.imagick.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal consegui dessa forma.

 function reduz_imagem($img, $max_x, $max_y, $nome_foto, $extensaoo)
        {
                //pega o tamanho da imagem ($original_x, $original_y)
                list($width, $height) = getimagesize($img);
                $original_x = $width;
                $original_y = $height;
                // se a largura for maior que altura
                if($original_x > $original_y) {
                           $porcentagem = (100 * $max_x) / $original_x;   
                }
                else {
                           $porcentagem = (100 * $max_y) / $original_y;
                }
                
                $tamanho_x = $original_x * ($porcentagem / 100);
                $tamanho_y = $original_y * ($porcentagem / 100);
                
                $image_p = imagecreatetruecolor($tamanho_x, $tamanho_y);
                
                if($extensaoo == 'jpeg' || $extensaoo == 'jpg')
                {
                        if (function_exists('imagejpeg')) 
                        {
                                $image   = imagecreatefromjpeg($img);
                                imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height);
                                return imagejpeg($image_p, $nome_foto, 85);
                        }
                        else
                        {
                                echo('<script> alert("Sem suporte para este tipo de imagem - ' . $extensaoo  . ', falha no cadastro!!");  </script>');
                                return false;
                        }
                }
                else
                {
                if($extensaoo == 'png')
                {
                        if (function_exists('imagepng')) 
                        {
                                $image   = imagecreatefrompng($img);
                                imagealphablending($image_p, false);
                                imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height);
                                imagesavealpha($image_p, true);
                                return imagepng($image_p, $nome_foto);
                        }
                        else
                        {
                                echo('<script> alert("Sem suporte para este tipo de imagem - ' . $extensaoo  . ', falha no cadastro!!");  </script>');
                                return false;
                        }
                }
                else
                {
                if($extensaoo == 'gif')
                {      

                
                        return  move_uploaded_file($img,$nome_foto) ;         
                
                           
                          }
                }
                }               
        }//fim reduz_imagem
  

Funcionou corretamente.

 

Obrigado a todos

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.