redimensionner plusieurs images proportionnellement

Répondre
LA GLOBULE
le 16/09/2010 à 15:29
LA GLOBULE
Si c'est la même nombre, alors ca veut dire que tu as au moins deux erreurs :
- à un endroit, y'en a une en trop
- à un autre endroit, il en manque une
jacque99
le 25/10/2010 à 17:36
jacque99
Bonjour tout le monde,
J’ai reformulé ma question à nouveau
J'ai un scripte pour redimensionner les images proportionnellement, il prend la plus grande valeur (hauteur ou bien largeur) , et il redimensionne l'autre valeur proportionnellement.
Le seul problème sur ce script c'est qu’il ne permet pas de définir longueur max et hauteur max.

Par exemple, je voulais générer une image avec : width max : 171 et height max : 107
Si je prends une image avec les démentions width : 420, et height 298, le redimensionnement proportionnel cava donner :
420 >> 298
171 >> x
x= (298*171)/420= 121 (plus grand que je voulais comme hauteur en max 107).
Ce que j'image faire, mais je ne sais pas encore comment, c'est de lancer une boucle pour obtenir :
H >> W
171 >> 121 (supérieur de mon max, je ne prends pas) je fais H - 1
170 >> 120 (supérieur de mon max, je ne prends pas) je refais H-1
.....................................
.....................................
.....................................
150 >> 107 (<= 107, je le prends)
Ce qui est important pour moi c'est de respecter le redimensionnement proportionnel pou ne pas déformer l'image, et en même temps ne pas dépasser les démentions max.
Je suis à l'écoute de vos commentaires.
Merci d'avance



<!-------------------------------index.php  -------------------------------------->
<html>
<head></head>
<body>
<!--On affiche le formulaire d'envoi d'une image-->
<center>
<br /><hr />

<form method="post" enctype="multipart/form-data" action="upload.php">
<p>



Le nom de l'image redimensionner avec 95 ,95
<input type="text" name="video"><br><br>



<input type="file" name="fichier" size="30">
<input type="submit" name="upload" value="Uploader">
</p>
</form>
</center>

</body>
</html>
<!----------------------------------- ------------------------------------------->


<!------------------------------- upload.php -------------------------------------->
<?php


$nomImage=$_POST['video'];

if( isset($_POST['upload']) ) // si formulaire soumis
{
$content_dir = 'upload/'; // dossier où

sera déplacé le fichier

$tmp_file = $_FILES['fichier']['tmp_name'];

if( !is_uploaded_file($tmp_file) )
{
exit("Le

fichier est introuvable");
}

// on vérifie maintenant l'extension
$type_file = $_FILES['fichier']['type'];

if( !

strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'png') && !strstr($type_file, 'bmp') && !strstr

($type_file, 'gif') )
{
exit("Le fichier n'est pas une image");
}

// on copie le fichier dans le dossier de

destination

$ext = substr($_FILES['fichier']['name'], strrpos($_FILES['fichier']['name'], '.'));

$name_file =

$nomImage.$ext;
echo $name_file;


//fonction pour changer les dimentions des fichiers
function redimensionner($file,

$maxwidth, $maxheight) {

list($rawwidth, $rawheight, $type) = @getimagesize($file);

if ($maxwidth < $rawwidth && $rawwidth >=

$rawheight) {

$width = $maxwidth;

$height = ($width / $rawwidth) * $rawheight;

}

elseif ($maxheight < $rawheight &&

$rawheight >= $rawwidth) {

$height = $maxheight;

$width = ($height /$rawheight) * $rawwidth;

}

else {

$height =

$rawheight;

$width = $rawwidth;

}

$imgbuffer = imagecreatetruecolor($width, $height);

switch($type) {

case 1: $image =

imagecreatefromgif($file); break;

case 2: $image = imagecreatefromjpeg($file); break;

case 3: $image = imagecreatefrompng

($file); break;

case 4: $image = imagecreatefrombmp($file); break;

default: exit("Tried to create thumbnail from $file: not

a valid image");

}

if (!$image) exit("Image creation from $file failed for an unknown reason. Probably not a valid image.");



else {

imagecopyresampled($imgbuffer, $image, 0, 0, 0, 0, $width, $height, $rawwidth, $rawheight);

imageinterlace

($imgbuffer);

switch($type) {




case 1: $image = imagegif($imgbuffer, $file, 80); break;

case

2: $image = imagejpeg($imgbuffer, $file, 80); break;

case 3: $image = imagepng($imgbuffer, $file, 7); break;



}

}

}


if(

preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file) )

{

exit("Nom de fichier non valide");

}

else if( !move_uploaded_file

($tmp_file, $content_dir . $name_file) )

{

exit("Impossible de copier le fichier dans $content_dir");

}

redimensionner

($content_dir.$name_file,171, 107);

}
?>

<!----------------------------------- ------------------------------------------->
jacque
moogli
le 27/10/2010 à 05:54
moogli
effectivement il y avait des erreurs
- du a l'heure tardive sur une { manquante et un nom de variable foireux

j'en ai profiter pour corriger la retaille d'image qui ne devait pas bien fonctionner non plus ...

le tout cuit c'est par ici (le tout a mettre dans le même fichier ou modifie le paramètre manquant).

@+
Il en faut peu pour être heureux !!!!!
jacque99
le 27/10/2010 à 09:51
jacque99
Le php devient vraiment facile avec Moogli.
Je recois toujours un message d'erreur "ouch y a une boulette : "
jacque
jacque99
le 27/10/2010 à 16:09
jacque99
J'ai fait un calcule de la proportion entre largeur et hauteur à partir des dimensions maxi, et la même chose à partir des

dimensions réelles de l'image : j'ai comparé ensuite les deux en redimensionnant dans le sens approprié selon que le résultat est

positif ou négatif.
Finalement, mon code marche :), mais juste pour le redimensionnement d'une seule image.
J’attends toujours à faire un redimensionnement multiple de 3 images en même temps avec trois nom par exemple.
Voici mon code qui marche bien

<html>
<head></head>
<body>
<!--On affiche le formulaire d'envoi d'une image-->
<center>
<br /><hr />

<form method="post" enctype="multipart/form-data" action="upload.php">
<p>



Le nom de l'image redimensionner avec 95 ,95
<input type="text" name="video"><br><br>



<input type="file" name="fichier" size="30">
<input type="submit" name="upload" value="Uploader">
</p>
</form>
</center>

</body>
</html>


<?php
$nomImage=$_POST['video'];

if( isset($_POST['upload']) ) // si formulaire soumis
{
$content_dir = 'upload/'; // dossier où

sera déplacé le fichier

$tmp_file = $_FILES['fichier']['tmp_name'];

if( !is_uploaded_file($tmp_file) )
{
exit("Le

fichier est introuvable");
}

// on vérifie maintenant l'extension
$type_file = $_FILES['fichier']['type'];

if( !

strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'png') && !strstr($type_file, 'bmp') && !strstr

($type_file, 'gif') )
{
exit("Le fichier n'est pas une image");
}

// on copie le fichier dans le dossier de

destination

$ext = substr($_FILES['fichier']['name'], strrpos($_FILES['fichier']['name'], '.'));

$name_file =

$nomImage.$ext;
echo $name_file;


//fonction pour changer les dimentions des fichiers
function redimensionner

($file, $maxwidth, $maxheight) {

list($rawwidth, $rawheight, $type) = @getimagesize($file);

if

($maxwidth < $rawwidth && $rawwidth >= $rawheight) {
$width = $maxwidth;


$height = ($width / $rawwidth) * $rawheight; }

if ($maxheight <

$rawheight && $rawheight >= $rawwidth) {
$height = $maxheight;


$width = ($height / $rawheight) * $rawwidth; }


if($height > $maxheight) {


$width = ($maxheight / $height) * $width;
$height = $maxheight; }




$imgbuffer =

imagecreatetruecolor($width, $height);

switch($type) {

case 1: $image = imagecreatefromgif($file); break;

case 2: $image =

imagecreatefromjpeg($file); break;

case 3: $image = imagecreatefrompng($file); break;

case 4: $image = imagecreatefrombmp

($file); break;

default: exit("Tried to create thumbnail from $file: not a valid image");

}

if (!$image) exit("Image creation

from $file failed for an unknown reason. Probably not a valid image.");

else {

imagecopyresampled($imgbuffer, $image, 0, 0, 0,

0, $width, $height, $rawwidth, $rawheight);

imageinterlace($imgbuffer);

switch($type) {




case 1:

$image = imagegif($imgbuffer, $file, 80); break;

case 2: $image = imagejpeg($imgbuffer, $file, 80); break;

case 3:

$image = imagepng($imgbuffer, $file, 7); break;



}

}

}


if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file) )

{

exit("Nom

de fichier non valide");

}

else if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )

{

exit("Impossible de copier le

fichier dans $content_dir");

}
?>
jacque
LA GLOBULE
le 27/10/2010 à 17:53
LA GLOBULE
Tu n'as toujours pas compris comment on mettait le code en couleurs sur le forum ?
jacque99
le 27/10/2010 à 17:58
jacque99
je demande comment je peux modifier mon code ?
ne me dis pas aussi qu'il me manque des {
jacque
LA GLOBULE
le 27/10/2010 à 18:24
LA GLOBULE
Désolé, mais ton code est illisible :
- tu n'utilises pas le BB-Code du forum pour le mettre en couleur
- tu n'indentes pas ton code
- tu sautes une ligne entre chaque ligne de ton code

Avoue que cela n'encourage pas les gens à se pencher sur ton soucis :/
moogli
le 27/10/2010 à 19:54
moogli
bon je me demande si tu cherche à comprendre ? tu fait pareil sur phpfrance(ton dernier code ressemble a celui d'un certain jojolapine...)?

je t'ai fournis un code qui fonctionne, je l'ai testé !
quand tu a
<?php
if( isset($_FILES['fichier']) ) {
$ret = upload($_FILES['fichier'],'tmpsfolder',$nomImage);
if ($ret === false) {
echo '<p>ouch y a une boulette : </p>';
}
else {
// etc
}?>

si le message ouch y a une boulette s'affiche s'est que la fonction upload retourne false, et que donc (de part le code que j'ai fait) il y a un message d'erreur d'affiché !(ok on peu rajouter deux return false ligne 92 et 96 mais le soucis ne viens pas de la je pense.

quand au fait que le code fasse les 3 redimensionnements c'est exactement ce que fait le code que je t'ai fournis avec le renommage des images en tenant compte de leurs tailles. oui faut utiliser trois fois la fonction redimensionner, ceci pour que la fonction reste le plus possible "universelle" et ne doivent pas être re-coder pour la page suivante !

brefsi tu a eu un message d'erreur c'est parce que l'image a été rejetée (taille, poids, type etc).

la ça devient trop le souk !

@+
Il en faut peu pour être heureux !!!!!
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours