Jump to content


Photo

Problemas Com Gd


  • Faça o login para participar
1 reply to this topic

#1 andrearruda

andrearruda

    12 Horas

  • Usuários
  • 225 posts
  • Sexo:Não informado

Posted 05/04/2006, 11:49

Pq qdo eu crio uma miniatura de uma imagem via php usando o script logo abaixo a miniatura perde a qualidade????

$nomeImagem_g = "img_noticias_galeria_".str_pad(($proximoId), 6, "0", STR_PAD_LEFT)."_g.".strMinusculo($imagemExt);
				copy($imagemTmp,$diretorio.$nomeImagem_g);
				
				$diminui = 30;
				$x = ($imgSize[0] * $diminui) / 100;
				$y = ($imgSize[1] * $diminui) / 100;
				$imagemRec = imagecreate ($x, $y);
				$corFundo = imagecolorallocate ($imagemRec, 255, 255, 255);
				$corBorda = imagecolorallocate ($imagemRec, 102, 102, 102);
				$borda = 2;
				imagefilledrectangle($imagemRec, $borda, $borda, ($x-$borda)-1, $borda, $corBorda);//TOP
				imagefilledrectangle($imagemRec, $borda, ($y-$borda)-1, ($x-$borda)-1, ($y-$borda)-1, $corBorda);//BOTTOM
				imagefilledrectangle($imagemRec, $borda, $borda, $borda, ($y-$borda)-1, $corBorda);//LETF
				imagefilledrectangle($imagemRec, ($x-$borda)-1, $borda, ($x-$borda)-1, ($y-$borda)-1, $corBorda);//RGHT						
				
				$imgOrigem = imagecreatefromjpeg($imagemTmp);
				$origemX = imagesx($imgOrigem);
				$origemY = imagesy($imgOrigem);
				$diferenca = 10;
				$x = ($origemX * $diminui) / 100 - $diferenca;
				$y = ($origemY * $diminui) / 100 - $diferenca;
		
				if($origemX > $origemY){
					$finalX = $x;
					$finalY = floor($x * $origemY / $origemX);
					$f_x = 0;
					$f_y =  round(($y / 2) - ($finalY / 2));
				}else{
					$finalX = floor($y * $origemX / $origemY);
					$finalY = $y;
					$f_x = round(($x / 2) - ($finalX / 2));
					$f_y = 0;
				}
				
				$imgPeq = imagecreatetruecolor($x,$y);
				imagecopyresampled($imgPeq, $imgOrigem, 0, 0, 0, 0, $finalX, $finalY, $origemX, $origemY);					
				imagecopyresampled($imagemRec, $imgPeq, ($diferenca/2), ($diferenca/2), 0, 0, $x, $y, $x, $y);					
								
				$nomeImagem_p = "img_noticias_galeria_".str_pad(($proximoId), 6, "0", STR_PAD_LEFT)."_p.".strMinusculo($imagemExt);
				imagejpeg($imagemRec,$diretorio.$nomeImagem_p,"100");
				imagedestroy($imagemRec);

Da uma olhada nas imagem:
Original
Posted Image

Miniatura
Posted Image
//---------------------
Em casa de Saci, calça da pra dois!!!
//---------------------

#2 rEd nEcK *

rEd nEcK *

    |̲̅<̲̅Θ̲̅>̲̅|

  • Usuários
  • 164 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 05/04/2006, 16:11

Simples,

Ao invez de usar:
imagecreate()
Use:
imagecreatetruecolor()

Abraços
~/ ArrastoMemo.Com - Porque ganhar não é tudo, tem que humilhar o adversário /~




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq