8797 sujets

Développement web côté serveur, CMS

Bonjour,
voilà je voudrais redimensionner une image mais le résultat obtenu n'est pas le bon, tout du moins pas entièrement.
J'obtiens bien une image réduite mais elle aparait dans un cadre noir de la même taille que celui de départ.

Voilà mon code :

<?php
$max = "400";
$source = imagecreatefromjpeg("1.jpg");
$largeur_source = imagesx($source);
$hauteur_source = imagesy($source);

if ($largeur_source > $hauteur_source) {
	$largeur_destination = $max;
	$hauteur_destination = $hauteur_source / $largeur_source * $max;
} else {
	$hauteur_destination = $max;
	$largeur_destination = $largeur_source / $hauteur_source * $max;
}

//$largeur_source = imagesx($destination);
//$hauteur_source = imagesy($destination);

$destination = imagecreatetruecolor($largeur_source, $hauteur_source);

imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);
imagejpeg($destination, '1_small.jpg');

echo '<img src="1.jpg"><br /><br /><br /><img src="1_small.jpg">';
?>


Merci d'avance pour votre aide !
Modifié par DiaTriX (25 Apr 2007 - 20:22)
Salut j'ai testé ton script

suggestion:


//$largeur_source = imagesx($destination);
//$hauteur_source = imagesy($destination);

$destination = imagecreatetruecolor($largeur_source, $hauteur_source);


ça ne serai pas plutot



//$largeur_source = imagesx($destination);
//$hauteur_source = imagesy($destination);

$destination = imagecreatetruecolor($largeur_destination,$hauteur_destination);




le reste de la dimension (delta entre smal et source) est rempli de couleur #000000 soit du noir.

si tu as un soucis avec les ratios qui donnent des chiffres a virgules (pour les dimensions de ton image) pense a faire un intval()

genre

hauteur_destination = intval($hauteur_source / $largeur_source * $max);


attention au nom des photos et des extensions
plusieurs noms peuvent être identiques et donc poser des soucis dans le essaye alors un truc du genre:


en imaginant que le nom de la photo source est dans la variable
$imageName="1.jpg";
$extention="jpg";
tu fais alors un
$image_name=substr($image_name,0,-(strlen($extention)+1));



ça injecte la date et l'heure dans le nom de l'image après un point

donc echo $image_name;
= 1.2007042674224.jpg

ce qui rend impossible les doublons même si tu charge deux fois le même image.

voilà pour l'essentiel
Modifié par alexiase (26 Apr 2007 - 06:41)