redimensionar uma imagem para um tamanho exacto, manter o aspecto, e preencher qualquer espaço em php
-
13-09-2020 - |
Pergunta
hy,
Vamos supor que eu queira converter uma imagem para um tamanho exato, como por exemplo:400 x 300.O truque é, se a imagem, devido à sua relação de aspecto, não cabe em 400x300 e, em seguida, colocá-lo lá com bordas pretas.
Um 900x1200 imagem seria convertido para 225x300 para manter a sua relação de aspecto, e, em seguida, dada preto bordas esquerda e direita para torná-lo 400 x 300.
foto original:
|||||||||||||||||||||||
|||||||||||||||||||||||
|||||||||||||||||||||||
|||||||||||||||||||||||
|||||||||||||||||||||||
|||||||||||||||||||||||
|||||||||||||||||||||||
|||||||||||||||||||||||
depois de redimensionar eu quero algo parecido com isso:
_______________________
|+++++++++++++++++++++|
|+++++++++++++++++++++|
|+++++++++++++++++++++|
|+++++++||||||||++++++|
|+++++++||||||||++++++|
|+++++++++++++++++++++|
|+++++++++++++++++++++|
|_____________________|
a:"+++++++" eu quero ser um pouco de cor, e o "|||||||" são a imagem, no meio!
infelizmente eu não tenho nenhum código ainda!
eu quero algo como isto:http://phpthumb.sourceforge.net/demo/demo/phpThumb.demo.demo.php#x22 obrigado
Solução
Familiarizar-se com o gd
funções, que permitem manipular imagens.
Você precisa ler a imagem usando um dos imagecreatefrom...
funções.Em seguida, você precisará criar uma segunda imagem usando, por exemplo, imagecreatetruecolor
, o que você preencha com a cor de sua escolha.Em seguida, copie a imagem original para a nova imagem usando imagecopyresampled
, que permite que você redimensione-o no processo.Você precisará calcular o novo tamanho com uma matemática simples, de antemão, que funciona como getimagesize
posso ajudá-lo.
Alternativamente, brincar com o ImageMagick classe, que é uma alternativa para gd
você pode ou não pode achar mais fácil trabalhar com.
Melhor da sorte!:)
Outras dicas
Crie uma div com estilo para ter um plano de fundo preto, e dimensionada em 400 x 300.Em seguida, mostrar a sua imagem redimensionada dentro dessa div.Você pode até mesmo incluir uma verificação para certificar-se de que a imagem não é o aspecto desejado antes de mostrar a div.
Algo como isto:
<?
$height-ratio = $height / 300;
$width-ratio = $width / 400;
if ($height-ratio == $width-ratio) {
$ratio = $height-ratio;
} elseif ($height-ratio > $width-ratio) {
$ratio = $height-ratio;
echo "<div class='blackbox'>";
} else {
$ratio = $width-ratio;
echo "<div class='blackbox'>";
}
$newHeight = $height / $ratio;
$newWidth = $width / $ratio;
echo "<img src='".$imgSrc."' height='".$newHeight."' width='".$newWidth."' />";
if ($height-ratio != $width-ratio)
echo "</div>";
?>
Com suporte a css de:
.blackbox {
text-align: center;
background-color: black;
height: 300px;
width: 400px;
}
Eu sou um grande fã de editar e redimensionar as imagens com antecedência para ser o tamanho que deseja, ao invés de definir a largura e altura, quando é processado.O desempenho é melhor e você não tem que se preocupar sobre como diferentes navegadores podem lidar com isso de forma diferente.
Então, se você não tiver um programa de edição de imagem chegar Paint.net.Grátis e funciona bem.