redimensionner plusieurs images proportionnellement

Répondre
jacque99
le 07/09/2010 à 17:13
jacque99
Bonjour tout le monde,
Au fait, j’ai mon script qui permet de redimensionné une image proportionnellement qui marche bien et qui m'enregistre l'image avec un nom saisie sur une zone de texte sur un

répertoire.

Ce que je voulais modifier, c'est la possibilité de redimensionner la même image 3 fois (avec le nom saisi dans les textbox, et l'enregistré sur le serveur.
Merci pour toute indication qui peut m'aider à compléter mon script

<!------------------------------ page 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 171 ,107
<input type="text" name="video"><br><br>



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


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

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

</body>
</html>

<!------------------------------ fin page index.php------------------------------------>

<!------------------------------ page 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) {
/*
$maxwidth = 171;
$maxheight = 171;
*/
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);

}
?>
<!------------------------------ fin page upload------------------------------------>
jacque
moogli
le 07/09/2010 à 18:04
moogli
salut,

la prochaine fois utilise le wall pour le code c'est le merdier la :/

pour ta question, je te déconseille de laisser libre court a l'imagination des gens pour tes trois tailles d'images par ce que ça va vite être le merdier.

donc
1/ tu upload le fichier telquel dans un répertoire temporaire, ensuite tu utilise ta fonction pour redimensionner en passant les différentes tailles a chaque fois.
2/ oublie pas de virer l'upload de ta fonction redimensionner.

3/ pour la clareté de ton code, évite de changer de ligne a chaque mot clef. Par exemple function redimensionner( ...)

4/ il faut que tu test toutes les variables que tu utilise avant de les utiliser pour éviter les problèmes.

@+
Il en faut peu pour être heureux !!!!!
moogli
le 07/09/2010 à 20:45
moogli
bon je suis sympa ce soir tu peut voir la chose comme ça http://www.lephpfacile.com/wall/wall-1924.php

faut ajouter le test du nom de fichier, mais perso je ne laisserais pas l'utilisateur le choix de ce nom c'est une source d'emmerde.
Je ne sais pas ce que tu en fait de ces images, mais si celle ci sont liée à une table MySQL (ou autre SGBD), ce qui semble le cas vu que tu ne va pas avoir une seul vidéo, je pense que générer le nom toi même à partir de l'id dans la table est une idée plus simple.
Par exemple pour la vidéo avec l'id 28 dans la table
(je te laisse déterminer le type d'image à partir du type mime, à partir de ça tu peut creer une variable $ext avec l'extension du fichier)
<?php
// a la fin du code
redimensionner('tmpsfolder/'.$nomImage,$content_dir.$idvideo.'-171x107.'.$ext, 171, 107);
redimensionner('tmpsfolder/'.$nomImage,$content_dir.$idvideo.'-200x200-'.$ext, 200, 200);
redimensionner('tmpsfolder/'.$nomImage,$content_dir.$idvideo.'-500x500-'.$ext, 500, 500);
?>


bon y surement plein de chose à faire mais c'est déjà bien.

@+
Il en faut peu pour être heureux !!!!!
jacque99
le 10/09/2010 à 12:00
jacque99
Bonjour Moogli,
J'ai essayé t'ajouter tes lignes de code, mais ça marche pas, même j'ai fait copie coller du code complet, mais il ya une erreur
jacque
moogli
le 10/09/2010 à 21:09
moogli
ro zut,

ben tu l'a corrigée ?

c'est quoi l'erreur ?

le code du wall plus les quelques lignes ci dessous sont une mouture de ce que tu a fait.

@+
Il en faut peu pour être heureux !!!!!
jacque99
le 15/09/2010 à 17:47
jacque99
Malheureusement, je n’ai pas encore corrigé les bugs.
Voici le code d’erreur que j’ai :
Parse error: syntax error, unexpected '{' in C:\xampp\htdocs\testeRedimentionement\upload.php on line 35
En plus il ya pas la place pour entrer le nom de la 2eme et la 3eme image
jacque
LA GLOBULE
le 16/09/2010 à 11:39
LA GLOBULE
Tu as une erreur de syntaxe ligne 35 de ton fichier.

A priori, il manquerait un } dans ton code.
LA GLOBULE
le 16/09/2010 à 12:42
LA GLOBULE
Montre nous ton code (en utilisant le BB-Code).

Normalement, si tu comptes les { et les } tu devrais trouver le même nombre.
Si ce n'est pas le même nombre, c'est qu'il en manque :)
Répondre
LoadingChargement en cours