Oi Dexter, eu criei um arquivo que uso pra dimensionar na hora de mostrar. Vê se te ajuda. pra chamar uso assim: <img src="thumb_maker.php?img=ENDERECOIMAGEM&x=100&y=100" border="0">
img é o endereço, x é a largura e y a altura da imagem.
Se passar só o valor de x
<img src="thumb_maker.php?img=ENDERECOIMAGEM&x=100" border="0">
vai redimencionar proporcionalmente, mesma coisa se passar só o valor de y.
o arquivo é esse:
thumb_maker.php
<?
ini_set("memory_limit","1000M");
ini_set('allow_url_fopen', 'on');
$MaxLarg = $largura = $_GET["x"] != ''?$_GET["x"]:'';
$MaxAlt = $altura = $_GET["y"] != ''?$_GET["y"]:'';
$tb_x = $_GET["tb_x"] != ''?$_GET["tb_x"]:'';
$tb_y = $_GET["tb_y"] != ''?$_GET["tb_y"]:'';
$foto = $_GET["img"];
$Ext = substr($foto,-4);
if(strtoupper($Ext) == ".JPG")
{
$ExtFunc = "jpeg";
}elseif(strtoupper($Ext) == ".GIF")
{
$ExtFunc = "gif";
}elseif(strtoupper($Ext) == ".PNG")
{
$ExtFunc = "png";
}
$CriarImagemDe = "imagecreatefrom" . $ExtFunc;
$img = $img_origem = $CriarImagemDe($foto);
$numWdt = $origX = imagesx($img_origem);
$numHgt = $origY = imagesy($img_origem);
if($largura != '' && $altura != '')
{
if(($tb_x == '' && $tb_y == '') || ($tb_x == 0 && $tb_y == 0))
{
if( ($MaxLarg > $numWdt) && ($MaxAlt > $numHgt) )
{
$nova = $img_origem;
$width = $numWdt;
$height = $numHgt;
}else
{
$areanova = $MaxLarg*$MaxAlt;
$largarea = $MaxAlt * $numWdt;
$altarea = $MaxLarg * $numHgt;
$maxlargarea = $areanova / $largarea;
$maxaltarea = $areanova / $altarea;
if($maxlargarea > $maxaltarea)
{
$width = $maxlargarea*$numWdt;
$height = $maxlargarea*$numHgt;
}else
{
$width = $maxaltarea*$numWdt;
$height = $maxaltarea*$numHgt;
};
$nova = imagecreatetruecolor($width,$height);
imagesavealpha($nova, true);
$trans_colour = imagecolorallocatealpha($nova, 0, 0, 0, 127);
imagefill($nova, 0, 0, $trans_colour);
imagecopyresampled($nova, $img_origem, 0,0,0,0,$width,$height,$numWdt-1,$numHgt);
};
if($width > $MaxLarg)
{
$nx = ($width-$MaxLarg)/2;
}else
{
$nx = 0;
}
if($height < $MaxAlt)
{
$ny = ($height-$MaxAlt)/2;
}else
{
$ny = 0;
}
$i = imagecreatetruecolor($MaxLarg,$MaxAlt);
imagesavealpha($i, true);
$trans_colour = imagecolorallocatealpha($i, 0, 0, 0, 127);
imagefill($i, 0, 0, $trans_colour);
imagecopy($i, $nova, 0, 0, $nx, $ny,$MaxLarg,$MaxAlt);
}else
{
$destX = $largura;
$destY = $altura;
if($origY>$origX)
{
$porc = ($largura*100)/$origX;
$destY = $tamY = ($origY*$porc)/100;
if($destY<=$MaxAlt) $destY=$MaxAlt;
}else
{
$porc = ($altura*100)/$origY;
$destX = $tamX = ($origX*$porc)/100;
if($destX<=$MaxLarg) $destX=$MaxLarg;
}
$img_destino = imagecreatetruecolor($destX,$destY);
imagesavealpha($img_destino, true);
$trans_colour = imagecolorallocatealpha($img_destino, 0, 0, 0, 127);
imagefill($img_destino, 0, 0, $trans_colour);
imagecopyresampled( $img_destino, $img_origem, 0, 0, 0, 0, $destX, $destY, $origX, $origY );
$porcy = ($tb_y*100)/$origY;
$ny = ($MaxAlt*$porcy)/100;
$porcx = ($tb_x*100)/$origX;
$nx = ($MaxLarg*$porcx)/100;
if(($destY-$ny)<$MaxAlt) $ny = $destY-$MaxAlt;
if(($destX-$nx)<$MaxLarg) $nx = $destX-$MaxLarg;
$i = imagecreatetruecolor($MaxLarg,$MaxAlt);
imagesavealpha($i, true);
$trans_colour = imagecolorallocatealpha($i, 0, 0, 0, 127);
imagefill($i, 0, 0, $trans_colour);
imagecopy($i, $img_destino, 0, 0, $nx, $ny,$destX,$destY);
}
$img = $i;
}else
{
$destX = $largura;
$destY = $altura;
if($largura != '')
{
$porc = ($largura*100)/$origX;
$destY = $tamY = ($origY*$porc)/100;
}
if($altura != '')
{
$porc = ($altura*100)/$origY;
$destX = $tamX = ($origX*$porc)/100;
}
$img_destino = imagecreatetruecolor($destX,$destY);
imagesavealpha($img_destino, true);
$trans_colour = imagecolorallocatealpha($img_destino, 0, 0, 0, 127);
imagefill($img_destino, 0, 0, $trans_colour);
imagecopyresampled( $img_destino, $img_origem, 0, 0, 0, 0, $destX, $destY, $origX, $origY );
imagedestroy($img_origem);
$img = $img_destino;
}
header('Content-type: image/'.$ExtFunc);
$aux = 'image'.$ExtFunc;
if($ExtFunc == 'png') $aux($img);
else $aux($img,NULL,100);
imagedestroy($img);
?>