Bom dia à todos.. Pessoal enfrento o seguinte problema. Tenho um código em PhP, criado por Felipe Oliveira, que faz o seguinte. Pega a imagem real, e redimensiona para o tamanho especificado, cortando a imagem caso necessário. Segue o código abaixo: class OBImagem
{
function redimensiona_fixo($origem,$destino,$maxlargura,$maxaltura,$qualidade=80)
{
if(!strstr($origem,"http") && !file_exists($origem))
echo("Arquivo de origem da imagem inexistente");
return false;
}
$ext = strtolower(end(explode('.', $origem)));
if($ext == "jpg" || $ext == "jpeg")
{
$img_origem = @imagecreatefromjpeg($origem);
}
elseif ($ext == "gif")
{
$img_origem = @imagecreatefromgif($origem);
}
elseif ($ext == "png")
{
$img_origem = @imagecreatefrompng($origem);
}
if(!$img_origem)
{
echo("Erro ao carregar a imagem, talvez formato não suportado");
return false;
}
$maxAltura = 20;
do
{
$alt_origem = imagesy($img_origem);
$lar_origem = imagesx($img_origem);
$escala = min($maxAltura/$alt_origem, $maxAltura/$lar_origem);
$alt_destino = floor($escala*$alt_origem);
$lar_destino = floor($escala*$lar_origem);
$maxAltura = $maxAltura+2;
}while($alt_destino<=$maxaltura or $lar_destino<=$maxlargura);
$alt = ceil((((50*$alt_destino)/100))-ceil($maxaltura/2));
$lar = ceil((((50*$lar_destino)/100))-ceil($maxlargura/2));
// Cria imagem de destino
$img_destino = imagecreatetruecolor($maxlargura,$maxaltura);
// Redimensiona
imagecopyresampled($img_destino, $img_origem, -$lar, -$alt, 0, 0, $lar_destino, $alt_destino, $lar_origem, $alt_origem);
imagedestroy($img_origem);
$ext = strtolower(end(explode('.', $destino)));
if($ext == "jpg" || $ext == "jpeg")
{
imagejpeg($img_destino,$destino,$qualidade);
return true;
}
elseif ($ext == "gif")
{
imagepng($img_destino,$destino);
return true;
}
elseif ($ext == "png")
{
imagepng($img_destino,$destino);
return true;
}
else
{
echo("Formato de destino não suportado");
return false;
}
}
}
Chama a função pelo seguinte código:
$OBImagem = new OBImagem();
$OBImagem->redimensiona_fixo('./foto1.jpg','./miniatura/foto1.jpg',203,99,100); O problema é: Essa função ao redimensionar, quando é necessário cortar a imagem, ele corta parte do topo da imagem, e parte do rodapé da imagem, ou seja ele redimensiona e corta deixando mais a parte central da imagem. Eu preciso que a função redimensione sem cortar o topo, cortando apenas a parte inferior da imagem se necessário. Mas não estou conseguindo arrumar a função. Abaixo umas imagens ilustrando o que preciso: IMAGEM REAL IMAGEM QUE A FUNÇÃO RETORNA IMAGEM QUE PRECISO Alguém tem alguma idéia de como corrigir isso? Obrigado