Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 427

Problema com Upload de Imagem Transparent

30-09-2014 06:04

Quando eu upo uma imagem transparente depois de feito o upload ela fica com fundo preto por que ?? o que está errado neste código??

Codigo Usado para Upload

<? $foto     = $_GET['img']; // Caminho da foto $cortar = $_GET['corta']; #$tam     = $_GET['tam']; // Configuracao do tamanho da imagem final $largura_moldura = $_GET['x']; $altura_moldura = $_GET['y']; //Recebe o nome da imagem $imagem = $foto; # x_y_corta_caminhoarq function imageComposeAlpha( &$src, &$ovr, $ovr_x, $ovr_y, $ovr_w = false, $ovr_h = false) {     if( $ovr_w && $ovr_h )         $ovr = imageResizeAlpha( $ovr, $ovr_w, $ovr_h );       /* Noew compose the 2 images */     imagecopy($src, $ovr, $ovr_x, $ovr_y, 0, 0, imagesx($ovr), imagesy($ovr) ); } /**  * Resize a PNG file with transparency to given dimensions  * and still retain the alpha channel information  * Author:  Alex Le - http://www.alexle.net  */ function imageResizeAlpha(&$src, $w, $h) {         /* create a new image with the new width and height */         $temp = imagecreatetruecolor($w, $h);           /* making the new image transparent */         $background = imagecolorallocate($temp, 0, 0, 0);         ImageColorTransparent($temp, $background); // make the new temp image all transparent         imagealphablending($temp, false); // turn off the alpha blending to keep the alpha channel           /* Resize the PNG file */         /* use imagecopyresized to gain some performance but loose some quality */         imagecopyresized($temp, $src, 0, 0, 0, 0, $w, $h, imagesx($src), imagesy($src));         /* use imagecopyresampled if you concern more about the quality */         //imagecopyresampled($temp, $src, 0, 0, 0, 0, $w, $h, imagesx($src), imagesy($src));         return $temp; }      $proporcao_moldura = $largura_moldura / $altura_moldura; $proporcao_moldura = round($proporcao_moldura, 2); list($largura_orig, $altura_orig) = getimagesize($imagem); // Largura e Altura originais   if ($cortar==1) {} else {     if (($largura_orig < $largura_moldura)&&($altura_orig < $altura_moldura)) {         $theight = $altura_orig;         $twidth = $largura_orig;     } else {         $theight = $largura_moldura * $altura_orig      / $largura_orig;         $twidth = $largura_moldura;         if ($theight > $altura_moldura) {             $theight = $altura_moldura;             $twidth = $altura_moldura * $largura_orig / $altura_orig;           }     }     $altura_moldura = $theight;     $largura_moldura = $twidth;   } $proporcao = $largura_orig / $altura_orig; $proporcao = round($proporcao, 2); if ($proporcao == $proporcao_moldura) { // Se a proporção da imagem for IGUAL que 4/3     $largura_dest = $largura_moldura;     $altura_dest = $altura_moldura;     $tipo = null; } elseif ($proporcao < $proporcao_moldura) { // Se a proporção da imagem for MENOR que 4/3     $altura_dest = ($largura_moldura * $altura_orig) / $largura_orig;     $altura_dest = round($altura_dest, 0);     $largura_dest = $largura_moldura;          $tipo = "p"; } else { // Se a proporção da imagem for MAIOR que 4/3     $largura_dest = ($altura_moldura * $largura_orig) / $altura_orig;     $largura_dest = round($largura_dest, 0);     $altura_dest = $altura_moldura;          $tipo = "r"; }           #die($tipo."|"); if ($tipo == "r") { // Se a foto é do tipo RETRATO (Vertical)     $x = $largura_dest - $largura_moldura;     $x = $x / 2;     $x = $x * (-1);     $y = 0; }  elseif ($tipo == "p") { // Se a foto é do tipo PAISAGEM (Horizontal)     $y = $altura_dest - $altura_moldura;     $y = $y / 2;     $y = $y * (-1);     $x = 0; } else {     $y = $altura_dest - $altura_moldura;     $x = $y; } $Extensao = strtolower(substr($foto,strlen($foto)-3,3)); // Início da Geração da Imagem header('Content-type: image/jpeg'); //$imagem_dest = imagecreatetruecolor($largura_moldura, $altura_moldura); $imagem_dest = imagecreatetruecolor($largura_moldura, $altura_moldura); if ($Extensao=='gif') $imagem_orig = imagecreatefromgif($imagem); else if ($Extensao=='png') $imagem_orig = imagecreatefrompng($imagem); else $imagem_orig = imagecreatefromjpeg($imagem); //imagecopyresized($imagem_dest, $imagem_orig, 0, 0, 0, 0, $largura_dest, $altura_dest, $largura_moldura, $altura_moldura); imagecopyresampled($imagem_dest, $imagem_orig, $x, $y, 0, 0, $largura_dest, $altura_dest, $largura_orig, $altura_orig); if ($Logomarca) {     $LogomarcaImg = imagecreatefrompng($LogomarcaArquivo);     $LogomarcaDimensoes = getimagesize($LogomarcaArquivo);     $LogomarcaX = 0;     $LogomarcaY = $altura_dest - $LogomarcaDimensoes[1];     imageComposeAlpha( $imagem_dest, $LogomarcaImg, $LogomarcaX, $LogomarcaY); } // Output imagejpeg($imagem_dest, null, 80); exit; ?>

Obrigado
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17563
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Problema com Upload de Imagem Transparent

30-09-2014 09:43

Qual formato da imagem original, e qual formato da imagem depois de enviada?

Dependendo do formato da imagem, deve ter um if para cada tipo de formato diferente.

No seu código tem a linha

// Início da Geração da Imagem header('Content-type: image/jpeg'); 

Que parece ser para qualquer formato de imagem, isso pode gerar conflito quando a imagem não for jpg.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 427

Problema com Upload de Imagem Transparent

30-09-2014 14:53

Eu alterei está linha para :

header('Content-type: image/png');  

o formato de imagem que está sendo enviado é em png transparente e mesmo com a alteração de

de header('Content-type: image/jpeg');  para header('Content-type: image/png');  

Continua fazendo upload com fundo preto.

tem algum outro erro no código?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17563
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Problema com Upload de Imagem Transparent

30-09-2014 19:41

Creio que você precise passar na imagem o imagealphablending e o imagesavealpha

Nesse link abaixo tem uma exemplo de resize de imagem, e tem a linha que as funções acima são aplicadas. Testa o script, depois só aplicar as linhas ao seu script.

http://www.akemapa.com/2008/07/10/php-gd-resize-transparent-image-png-gif/
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 427

Problema com Upload de Imagem Transparent

30-09-2014 20:58

fiz este teste e continua não dando certo

$Extensao = strtolower(substr($foto,strlen($foto)-3,3)); // Início da Geração da Imagem header('Content-type: image/png'); //$imagem_dest = imagecreatetruecolor($largura_moldura, $altura_moldura); $imagem_dest = imagecreatetruecolor($largura_moldura, $altura_moldura); imagealphablending($imagem_dest, false); // turn off the alpha blending to keep the alpha channel imagesavealpha($imagem_dest, true); if ($Extensao=='gif') $imagem_orig = imagecreatefromgif($imagem); else if ($Extensao=='png') $imagem_orig = imagecreatefrompng($imagem); else $imagem_orig = imagecreatefromjpeg($imagem);  

O que posso fazer?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17563
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Problema com Upload de Imagem Transparent

30-09-2014 21:08

O script do link funcionou. Tenta adicionar todo o bloco do transparente do script do link aplicando suas variáveis.

 if(($imgInfo[2] == 1) OR ($imgInfo[2]==3)){   imagealphablending($newImg, false);   imagesavealpha($newImg,true);   $transparent = imagecolorallocatealpha($newImg, 255, 255, 255, 127);   imagefilledrectangle($newImg, 0, 0, $nWidth, $nHeight, $transparent);  } 

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 427

Problema com Upload de Imagem Transparent

30-09-2014 21:20

Alterei assim e continua com upload em fundo preto

$imagem_dest = imagecreatetruecolor($largura_moldura, $altura_moldura);  if(($imagem_dest[2] == 1) OR ($imagem_dest[2]==3)){   imagealphablending($imagem_dest, false);   imagesavealpha($imagem_dest,true);   $transparent = imagecolorallocatealpha($newImg, 255, 255, 255, 127);   imagefilledrectangle($imagem_dest, 0, 0, $largura_moldura, $altura_moldura, $transparent);  }  if ($Extensao=='gif') $imagem_orig = imagecreatefromgif($imagem); else if ($Extensao=='png')     $imagem_orig = imagecreatefrompng($imagem); else $imagem_orig = imagecreatefromjpeg($imagem); //imagecopyresized($imagem_dest, $imagem_orig, 0, 0, 0, 0, $largura_dest, $altura_dest, $largura_moldura, $altura_moldura); imagecopyresampled($imagem_dest, $imagem_orig, $x, $y, 0, 0, $largura_dest, $altura_dest, $largura_orig, $altura_orig); 

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17563
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Problema com Upload de Imagem Transparent

30-09-2014 21:29

A função está de acordo com o manual PHP

http://php.net/manual/en/function.imagesavealpha.php
e
http://php.net/manual/en/function.imagecolortransparent.php

Não sei se pode ser a versão do PHP que você usa que está com a GD desatualizada.

Eu testei o script desse post, e funcionou aqui localmente no Xampp http://www.9lessons.info/2009/03/upload-and-resize-image-with-php.html

Enviei uma imagem png e ficou com o fundo transparente.

<?php error_reporting(0);   $change=""; $abc="";     define ("MAX_SIZE","400"); function getExtension($str) {         $i = strrpos($str,".");         if (!$i) { return ""; }         $l = strlen($str) - $i;         $ext = substr($str,$i+1,$l);         return $ext; }   $errors=0;   if($_SERVER["REQUEST_METHOD"] == "POST") {         $image =$_FILES["file"]["name"];         $uploadedfile = $_FILES['file']['tmp_name'];               if ($image)         {                         $filename = stripslashes($_FILES['file']['name']);                         $extension = getExtension($filename);                 $extension = strtolower($extension);                                 if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif"))                 {                                         $change='<div class="msgdiv">Unknown Image extension </div> ';                         $errors=1;                 }                 else                 {    $size=filesize($_FILES['file']['tmp_name']);     if ($size > MAX_SIZE*1024) {         $change='<div class="msgdiv">You have exceeded the size limit!</div> ';         $errors=1; }     if($extension=="jpg" || $extension=="jpeg" ) { $uploadedfile = $_FILES['file']['tmp_name']; $src = imagecreatefromjpeg($uploadedfile);   } else if($extension=="png") { $uploadedfile = $_FILES['file']['tmp_name']; $src = imagecreatefrompng($uploadedfile);   } else { $src = imagecreatefromgif($uploadedfile); }   echo $scr;   list($width,$height)=getimagesize($uploadedfile);     $newwidth=60; $newheight=($height/$width)*$newwidth; $tmp=imagecreatetruecolor($newwidth,$newheight);     $newwidth1=25; $newheight1=($height/$width)*$newwidth1; $tmp1=imagecreatetruecolor($newwidth1,$newheight1);   imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);   imagecopyresampled($tmp1,$src,0,0,0,0,$newwidth1,$newheight1,$width,$height);     $filename = "images/". $_FILES['file']['name'];   $filename1 = "images/small". $_FILES['file']['name'];       imagejpeg($tmp,$filename,100);   imagejpeg($tmp1,$filename1,100);   imagedestroy($src); imagedestroy($tmp); imagedestroy($tmp1); }}   }   //If no errors registred, print the success message  if(isset($_POST['Submit']) && !$errors) {     // mysql_query("update {$prefix}users set img='$big',img_small='$small' where user_id='$user'");         $change=' <div class="msgdiv">Image Uploaded Successfully!</div>';  }   ?>   <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en"><head>     <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"> <meta content="en-us" http-equiv="Content-Language">       <title>picture demo</title>        <link href=".css" media="screen, projection" rel="stylesheet" type="text/css">         <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script> <script type="text/javascript" src="js/jquery_002.js"></script> <script type="text/javascript" src="js/displaymsg.js"></script> <script type="text/javascript" src="js/ajaxdelete.js"></script>                 <style type="text/css">   .help { font-size:11px; color:#006600; } body {      color: #000000;  background-color:#999999 ;     background:#999999 url(<?php echo $user_row['img_src']; ?>) fixed repeat top left;                         font-family:"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif;                 }                 .msgdiv{         width:759px; padding-top:8px; padding-bottom:8px; background-color: #fff; font-weight:bold; font-size:18px;-moz-border-radius: 6px;-webkit-border-radius: 6px; } #container{width:763px;margin:0 auto;padding:3px 0;text-align:left;position:relative; -moz-border-radius: 6px;-webkit-border-radius: 6px; background-color:#FFFFFF } </style>     </head><body>      <div align="center" id="err"> <?php echo $change; ?>  </div>    <div id="space"></div>               <div id="container" >        <div id="con">                         <table width="502" cellpadding="0" cellspacing="0" id="main">           <tbody>             <tr>               <td width="500" height="238" valign="top" id="main_right">                                                     <div id="posts">                           &nbsp;&nbsp;&nbsp;&nbsp;<img src="<?php echo $filename; ?>" />  &nbsp;&nbsp;&nbsp;&nbsp;<img src="<?php echo $filename1; ?>"  />                             <form method="post" action="" enctype="multipart/form-data" name="form1">                                 <table width="500" border="0" align="center" cellpadding="0" cellspacing="0">                <tr><Td style="height:25px">&nbsp;</Td></tr>                 <tr>           <td width="150"><div align="right" class="titles">Picture             : </div></td>           <td width="350" align="left">             <div align="left">               <input size="25" name="file" type="file" style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10pt" class="box"/>                                         </div></td>                                   </tr>                 <tr><Td></Td>                 <Td valign="top" height="35px" class="help">Image maximum size <b>400 </b>kb</span></Td>                 </tr>                 <tr><Td></Td><Td valign="top" height="35px"><input type="submit" id="mybut" value="       Upload        " name="Submit"/></Td></tr>         <tr>           <td width="200">&nbsp;</td>           <td width="200"><table width="200" border="0" cellspacing="0" cellpadding="0">               <tr>                 <td width="200" align="center"><div align="left"></div></td>                 <td width="100">&nbsp;</td>               </tr>           </table></td>         </tr>       </table>                                 </form>                                                                                   </div>                                                                                                                                   </td>                         </tr>           </tbody>      </table>                   </div>           </div>         </body></html>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 427

Problema com Upload de Imagem Transparent

30-09-2014 21:43

Como faço pra te mandar a versão do meu php e do meu GD?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17563
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Problema com Upload de Imagem Transparent

30-09-2014 21:53

Aqui localmente eu acesso o endereço http://localhost:8081/xampp/
Meu PHP é 5.5.15

Para saber se a biblioteca GD está habilitada e a versão você tem que criar um arquivo com o seguinte código:

<?php phpinfo(); ?>

Na página que for mostrada, basta buscar por GD Support e verificar se está habilitada.

Se quiser, posta um link para o png que está tendo problema que testo aqui.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 427

Problema com Upload de Imagem Transparent

30-09-2014 22:07

de uma olhada por favor na versão do GD e do php veja se tem algo errado
http://....

obrigado
0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 427

Problema com Upload de Imagem Transparent

30-09-2014 22:24

o link do site é este

http://....

usuario:**
senha:**
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17563
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Problema com Upload de Imagem Transparent

01-10-2014 08:20

Eu acessei o link, o GD está ativo sem problema. Creio que seja problema no seu script.

Eu acho que deve ter alguma linha no seu script que ainda esteja aplicando o background preto. Essa linha abaixo creio que seja uma delas

 /* making the new image transparent */         $background = imagecolorallocate($temp, 0, 0, 0); 

Tem que verificar isso.

Testa esse script que indiquei no link http://www.9lessons.info/2009/03/upload-and-resize-image-with-php.html

Verifica se o fundo vai ficar preto. Se não ficar, é alguma linha do seu script que está aplicando o fundo. No caso, a função imagecolorallocate é exatamente a que aplica o fundo.

0, 0, 0 = preto
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 427

Problema com Upload de Imagem Transparent

01-10-2014 11:49

Fiz a alteração que você me pediu e continua fazendo upload com fundo preto o que pode ser?

        $temp = imagecreatetruecolor($w, $h);                  imagealphablending($newImg, false);         imagesavealpha($newImg,true);         /* making the new image transparent */         $background = imagecolorallocatealpha($temp, 255, 255, 255, 127);         imagefilledrectangle($temp, $background); // make the new temp image all transparent           /* Resize the PNG file */         /* use imagecopyresized to gain some performance but loose some quality */         imagecopyresampled($temp, $src, 0, 0, 0, 0, $w, $h, imagesx($src), imagesy($src));         /* use imagecopyresampled if you concern more about the quality */         //imagecopyresampled($temp, $src, 0, 0, 0, 0, $w, $h, imagesx($src), imagesy($src));         return $temp; 

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17563
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Problema com Upload de Imagem Transparent

01-10-2014 12:36

Se o script de upload do link não funcionou, então provavelmente é do seu servidor. O ideal seria testar o script em outro servidor.
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado