Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, eu estou usando uma função do Fabyo para fazer o redimensionamento de imagens.
Função:
<?php
/Fabyo Guimaraes de Oliveira /
function reduz_imagem($img, $max_x, $max_y, $nome_foto) {
//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;
} $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);
$image = imagecreatefromjpeg($img);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height);
return imagejpeg($image_p, $nome_foto, 100);
}
?>Caso alguém possa me ajudar, ficarei grato.
Desde já, obrigado.
Mas amigo, como eu poderia usar? Toda função que eu uso está redimensionando proporcionalmente.
Por exemplo... eu gostaria de pegar uma imagem quadrada, e transformar numa retangular sem que ela seja retorcida.
Obrigado.
Impossível de fazer isto sem perder parte da imagem, é como transformar um quadrado em um círculo.
Tipo, eu nao ligo que a imagem perca uma parte... Eu só nao quero retorcer a imagem.
Vou lista aqui abaixo uma outra função que eu uso para fazer imagens quadradas.. Talvez com ela vocês possam me dizer alguma maneira em que eu somente modifique essa função:
function createSquareThumb( $size, $dest = "", $sufix = '_square', $watermark = false )
{
$image_w = $this->image_size[0];
$image_h = $this->image_size[1];
$scale = $image_w / $image_h;
if( $scale < 1 )
{
$thumb_w = $size;
$thumb_h = round($size / $scale);
$centerX = 0;
$centerY = round( ($thumb_h - $thumb_w) / 2 );
}
else
{
$thumb_w =round($size * $scale);
$thumb_h = $size;
$centerX = round( ($thumb_w - $thumb_h) / 2 );
$centerY = 0;
}
$info = pathinfo($this->file['name']);
if( preg_match('/(jpg|jpeg)/i', $info['extension']) )
{
$image_orig = imagecreatefromjpeg($this->file['tmp_name']);
}$image_orig = imagecreatefromgif($this->file['tmp_name']);
}$image_orig = imagecreatefrompng($this->file['tmp_name']);
}
$ptX = imagesx($image_orig);
$ptY = imagesy($image_orig);
$image_fin = imagecreatetruecolor($size, $size);
imagecopyresampled($image_fin, $image_orig, -$centerX, -$centerY, 0, 0, $thumb_w, $thumb_h, $image_w, $image_h);
imageconvolution($image_fin, array(array(-1,-1,-1), array(-1,16,-1), array(-1,-1,-1)), 8, 0);
if( $watermark )$img_info = getimagesize($watermark);
$base = pathinfo($watermark);
if( preg_match('/(jpg|jpeg)/i', $base['extension']) )
{
$logo = imagecreatefromjpeg($watermark);
}$logo = imagecreatefromgif($watermark);
}$logo = imagecreatefrompng($watermark);
}
$size_x = imagesx($image_fin);
$size_y = imagesy($image_fin);
imagealphablending($image_fin, true);
imagecopymerge($image_fin, $logo, 0, ($size_y - $img_info[1]), 0, 0, $size_x, imagesy($logo), 60);
imagedestroy($logo);
}if( preg_match('/(jpg|jpeg)/i', $info['extension']) )
{
imagejpeg($image_fin, $dest . '/' . $name, 90);
}imagegif($image_fin, $dest . '/' . $name);
}imagepng($image_fin, $dest . '/' . $name, 90);
}
$this->setFileUploaded($dest . '/' . $name);echo "Tudo feito blza!<br>";
echo "Nome da Imagem: ".$name."<br>";
$sql = "INSERT INTO imagem VALUES ('', '$name')";
$resultado=mysql_query($sql);
echo "Dados inseridos com sucesso!!<br>";
$sql3="SELECT * FROM imagem ORDER BY id DESC LIMIT 0, 1";
$sql2=mysql_query($sql3);
$row = mysql_fetch_array($sql2);
$img = $row['imagem'];
echo "<img src='uploads/".$name."' />";
imagedestroy($image_orig);
imagedestroy($image_fin);
}Pq não faz o seguinte, ve se esse tópico te ajuda.
http://forum.imasters.com.br/index.php?showtopic=253885
Você primeiro vai ter de recortar a imagem no tamanho certo, deixando ela retangular... Depois diminui a escala dela.
http://br.php.net/manual/pt_BR/function.im...pyresampled.php