redimensionner une image à la taille exacte, de conserver l'aspect, et remplir un espace en php

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

Question

hy,

Disons que je veux convertir une image à la taille exacte, par exemple:400x300.Le truc, c'est que si l'image, en raison de ses proportions, ne rentre pas dans 400x300, puis placez-y avec des bordures noires.

Un 900x1200 image serait converti en bas à 225x300 de conserver ses proportions, et des bords noirs à gauche et à droite pour le faire 400x300.

photo originale:

|||||||||||||||||||||||  
|||||||||||||||||||||||  
|||||||||||||||||||||||  
|||||||||||||||||||||||  
|||||||||||||||||||||||  
|||||||||||||||||||||||  
|||||||||||||||||||||||  
|||||||||||||||||||||||  

après redimensionnement je veux ressembler à quelque chose comme ceci:

_______________________
|+++++++++++++++++++++|
|+++++++++++++++++++++|
|+++++++++++++++++++++|
|+++++++||||||||++++++|
|+++++++||||||||++++++|
|+++++++++++++++++++++|
|+++++++++++++++++++++|
|_____________________|

l':"+++++++" je veux être un peu de couleur, et le "|||||||" sont l'image, dans le milieu!

malheureusement je n'ai pas de code pour l'instant!

je veux quelque chose comme ceci:http://phpthumb.sourceforge.net/demo/demo/phpThumb.demo.demo.php#x22 merci

Était-ce utile?

La solution

Se familiariser avec les gd fonctions, qui vous permettent de manipuler les images.

Vous aurez besoin de lire dans votre image à l'aide de l'un des imagecreatefrom... fonctions.Ensuite, vous aurez besoin de créer une seconde image à l'aide, par exemple, imagecreatetruecolor, qui vous remplir avec votre couleur de son choix.Ensuite, vous copiez l'image d'origine dans la nouvelle image à l'aide de imagecopyresampled, qui vous permet de redimensionner dans le processus.Vous aurez besoin de calculer la nouvelle taille avec quelques calculs simples à l'avance, qui fonctionne comme getimagesize peut vous aider avec.

Sinon, jouer avec les ImageMagick de la classe, qui est une alternative à gd vous pouvez ou ne pouvez pas trouver plus facile de travailler avec.

Bonne chance!:)

Autres conseils

Créer un style Div pour avoir un fond noir et dimensionné à 400x300.Puis montrer votre image redimensionnée à l'intérieur de cette div.Vous pouvez même inclure un chèque pour vous assurer que l'image n'est pas l'aspect souhaité avant de montrer la DIV.

quelque chose comme ceci:

<? 
$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>";
?>

avec supports de CSS de:

.blackbox { 
 text-align: center;
 background-color: black;
 height: 300px;
 width: 400px;
}

Je suis un grand fan d'édition et de redimensionnement des images à l'avance pour être la taille que je veux plutôt que de définir la largeur et la hauteur lorsqu'elle est rendue.La performance est meilleure et vous n'avez pas à vous soucier de la manière dont différents navigateurs pourraient le gérer différemment.

Donc, si vous n'avez pas de programme d'édition d'image, obtenez Paint.net.GRATUIT et fonctionne bien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top