Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Eu "criei" um sisteminha de upload de imagens onde independente qual seja o tamanho da imagem ela é forçada a ficar do tamanho que eu desejo, não do tamanho que ela é, mas sem estica-la.
O problema é que os espaços vazios da imagem são preenchidos com a cor preta.
Já procurei tópicos com o mesmo problema mas eles não solucinaram o meu.
Segue código:
<?php
$largura_thumb = 400;
$altura_thumb = 300;
$largura_crop = 400;
$altura_crop = 300;
$pasta = "imagens";
//Pega a imagem que será carimbada com a marca d'agua
$imagem_principal = $_FILES['image']['tmp_name'];
//Pega a extensao da imagem que ira ser cadastrada
$extensao = strtolower(substr($_FILES['image']['name'], -3));
// Cria um nome para a imagem a partir da criptografia da data e hora atual com extensão
$nome_final = md5(date("r")).'.'.$extensao;
//Define as funcoes para as determinadas extensoes:
if($extensao == "jpg"){ $img_thumb = imagecreatefromjpeg($imagem_principal); }
elseif($extensao == "png"){ $img_thumb = imagecreatefrompng($imagem_principal); }
elseif($extensao == "gif"){ $img_thumb = imagecreatefromgif($imagem_principal); }
//Pega a largura da imagem
$x = imagesx($img_thumb);
//Pega a altura da imagem
$y = imagesy($img_thumb);
//Define uma altura proporcional a altura escolhida
if($x>$y) $altura_thumb = ($largura_thumb * $y)/$x;
if($y>$x) $largura_thumb = ($altura_thumb * $x)/$y;$branco = imagecolorallocate($nova_thumb, 255, 255, 255);
imagefill($nova_thumb, 0, 0, $branco);##------- Recorta a imagem -------#
$imagem_thumb = "$pasta/$nome_final";
//Define as funcoes para as determinadas extensoes:
if($extensao == "jpg"){ $img_thumb = imagecreatefromjpeg($imagem_thumb); }
elseif($extensao == "png"){ $img_thumb = imagecreatefrompng($imagem_thumb); }
elseif($extensao == "gif"){ $img_thumb = imagecreatefromgif($imagem_thumb); }
//Cria uma nova imagem com as proporcoes escolhidas
$nova_thumb = imagecreatetruecolor($largura_crop, $altura_crop);
//Colore a nova imagem de branco
$branco = imagecolorallocate($nova_thumb, 255, 255, 255);
imagefill($nova_thumb, 0, 0, $branco);$dist_x = ($largura_thumb - $largura_crop)/2;
$dist_y = ($altura_thumb - $altura_crop)/2;imagecopyresampled($nova_thumb, $img_thumb, 0, 0, $dist_x, $dist_y, $largura_crop, $altura_crop, $largura_crop, $altura_crop);
unlink($imagem_principal);Espero que possam me ajudar.
Abraços
Carregando comentários...