redimensionar uma imagem para um tamanho exacto, manter o aspecto, e preencher qualquer espaço em php

StackOverflow https://stackoverflow.com/questions/3209206

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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top