redimensionner une image à la taille exacte, de conserver l'aspect, et remplir un espace en php
-
13-09-2020 - |
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
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.