Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 2012
-
26 avril 2006 à 15:42
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 2012
-
16 févr. 2007 à 18:49
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 16 févr. 2007 à 18:49
Hello, si un admin peut supprimer mes trois messages précédents...
Donc je disais que j'ai ajouté qqs trucs à ta fonction pour gérer plusieurs extensions à l'entrée, et aussi la façon de gérer la taille des images n'était pas bonne, elle faisait des bugs avec certains ratios largeur/hauteur. Merci
echo '<script>alert("Modification de l\'image enregistrée. Ne faites pas attention si l\'ancienne apparaît encore sur cette page.");</script>';
imagejpeg($dest_image, $destination);
}
else { echo '<script>alert("Il y a eu une erreur. Réessayez avec une autre image.");</script>';}
imagedestroy( $source_image);
imagedestroy( $dest_image);
unlink('deleteme.temp');
}
}
}
else echo '<script>alert("Il y a eu une erreur. Réessayez avec une autre image.");</script>';
}
else echo '<script>alert("Il y a eu une erreur. Réessayez avec une autre image.");</script>';
}
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 16 févr. 2007 à 18:16
Mince encore, j'ai oublié de remplacer les 140 et les 186 par $largeursouhaitee et $hauteursouhaitee dans le script :p
et désolé de flooder ^^
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 16 févr. 2007 à 18:14
Mince, mon indentation est partie... tant pis.
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 16 févr. 2007 à 18:11
Salut, j'ai ajouté qqs trucs à ta fonction pour gérer plusieurs extensions à l'entrée, et aussi la façon de gérer la taille des images n'était pas bonne, elle faisait des bugs avec certains ratios largeur/hauteur. Merci
echo '<script>alert("Modification de l\'image enregistrée.");</script>';
imagejpeg($dest_image, $destination);
}
else { echo '<script>alert("Il y a eu une erreur. Réessayez avec une autre image.");</script>';}
imagedestroy( $source_image);
imagedestroy( $dest_image);
unlink('deleteme.temp');
}
}
}
else echo '<script>alert("Il y a eu une erreur. Réessayez avec une autre image.");</script>';
}
else echo '<script>alert("Il y a eu une erreur. Réessayez avec une autre image.");</script>';
}
killua73
Messages postés2Date d'inscriptionmardi 8 juin 2004StatutMembreDernière intervention 9 novembre 2007 2 mai 2006 à 10:25
merci beuacoup pour tout ces bon conseils, je m'y met tout de suite
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 26 avril 2006 à 15:42
Salut!
L'idée est bonne, je voulais faire ça à un moment.
Quelques remarques:
tu as oublié un " à la ligne 49.
Tu devrais mieux indenter ton code.
Tu devrais en faire une fonction, ce serait beaucoup mieux. En sachant qu'une bonne fonction renvoie true en cas de succès et false en cas d'échec.
Ce serait bien que ton code s'occupe d'un fichier qui existe sur le serveur plutôt que de le récupérer d'un formulaire, ce serait plus facile pour tt le monde à adapter sur son site.
Tu devrais enlever la partie qui change le nom ou l'extension du fichier, ça c'est à chacun de voir pour lui.
Pareil pour le répertoire de destination, tu devrais le mettre en paramètre de ta fonction. De même que les tailles voulues en largeur et hauteur.
On n'écrit pas imagejpeg("$dest_image, vignette/$nomf"); mais plutôt imagejpeg($dest_image, 'vignette/'.$nomf); et echo 'enregistrement OK
'; plutôt que echo ('enregistrement OK
');
Dans ta logique, tu vérifies si le fichier que tu as copié à la racine n'existe pas avant de le copier... c'est plutôt dans le répertoire de destination que tu devrais vérifier, et utiliser un nom temporaire le temps que tu stockes l'image à la racine, histoire d'être à peu près sûr que tu n'écrases rien. Mais je ne suis même pas sûr que tu sois obligé de copier le fichier avant de travailler dessus :il faudrait voir si imagecreate peut prendre un $_FILES comme paramètre.
sinon fais attention à la gestion d'erreur: ça peut afficher enregistrement ok alors qu'il y a eu échec.
C'est à peu près tt ce que j'avais à dire je crois, je noterai qd tu auras modifié ton script
à+
16 févr. 2007 à 18:49
Donc je disais que j'ai ajouté qqs trucs à ta fonction pour gérer plusieurs extensions à l'entrée, et aussi la façon de gérer la taille des images n'était pas bonne, elle faisait des bugs avec certains ratios largeur/hauteur. Merci
if (!empty($_FILES['image']['name'])){
$largeursouhaitee = 140;
$hauteursouhaitee = 186;
$destination = './images/image.jpg';
$fichierTemp=$_FILES['image']['tmp_name'];
$fichierSize = $_FILES['image']['size'];
$fichierType = $_FILES['image']['type'];
$fichierErreur = $_FILES['image']['error'];
if (!$fichierErreur){
if(is_uploaded_file($fichierTemp)){
if(!move_uploaded_file($fichierTemp, 'deleteme.temp')){
echo '<script>alert("Impossible d\'envoyer l\'image, veuillez réessayez.");</script>';
}
else {
$nom = 'deleteme.temp';
$taille=getimagesize($nom);
switch($taille[2]){
case 1: $source_image = imagecreatefromgif($nom); break;
case 2: $source_image = imagecreatefromjpeg($nom); break;
case 3: $source_image = imagecreatefrompng($nom); break;
default: $source_image = false; break;
}
if($source_image){
if($taille[0]/$taille[1] >= $largeursouhaitee/$hauteursouhaitee){
$y = (int)($largeursouhaitee*$taille[1]/$taille[0]);
$x = $largeursouhaitee;
$pos_y = (int)(($hauteursouhaitee-$y)/2);
$pos_x = 0;
}
else {
$x = (int)($hauteursouhaitee*$taille[0]/$taille[1]);
$y = $hauteursouhaitee;
$pos_x = (int)(($largeursouhaitee-$x)/2);
$pos_y = 0;
}
$dest_image = imagecreatetruecolor($largeursouhaitee, $hauteursouhaitee);
$noir = imagecolorallocate($dest_image, 255, 255, 255);
if(imagecopyresampled($dest_image,$source_image, $pos_x,$pos_y,0,0,$x,$y,$taille[0] ,$taille[1])) {
echo '<script>alert("Modification de l\'image enregistrée. Ne faites pas attention si l\'ancienne apparaît encore sur cette page.");</script>';
imagejpeg($dest_image, $destination);
}
else { echo '<script>alert("Il y a eu une erreur. Réessayez avec une autre image.");</script>';}
imagedestroy( $source_image);
imagedestroy( $dest_image);
unlink('deleteme.temp');
}
}
}
else echo '<script>alert("Il y a eu une erreur. Réessayez avec une autre image.");</script>';
}
else echo '<script>alert("Il y a eu une erreur. Réessayez avec une autre image.");</script>';
}
16 févr. 2007 à 18:16
et désolé de flooder ^^
16 févr. 2007 à 18:14
16 févr. 2007 à 18:11
if (!empty($_FILES['image']['name'])){
$largeursouhaitee = 140;
$hauteursouhaitee = 186;
$destination = './repertoire/image.jpg';
$fichierTemp=$_FILES['image']['tmp_name'];
$fichierSize = $_FILES['image']['size'];
$fichierType = $_FILES['image']['type'];
$fichierErreur = $_FILES['image']['error'];
if (!$fichierErreur){
if(is_uploaded_file($fichierTemp)){
if(!move_uploaded_file($fichierTemp, 'deleteme.temp')){
echo '<script>alert("Impossible d\'envoyer l\'image, veuillez réessayez.");</script>';
}
else {
$nom = 'deleteme.temp';
$taille = getimagesize($nom);
switch($taille[2]){
case 1: $source_image = imagecreatefromgif($nom); break;
case 2: $source_image = imagecreatefromjpeg($nom); break;
case 3: $source_image = imagecreatefrompng($nom); break;
default: $source_image = false; break;
}
if($source_image){
if($taille[0]/$taille[1] >= 140/186){
$x = 140;
$y = (int)($x*$taille[1]/$taille[0]);
$pos_y = (int)((186-$y)/2);
}
else {
$y = 186;
$x = (int)($y*$taille[0]/$taille[1]);
$pos_x = (int)((140-$x)/2);
}
$dest_image = imagecreatetruecolor(140,186);
$noir=imagecolorallocate($dest_image, 0, 0, 0);
if(imagecopyresampled($dest_image,$source_image, 0,0,0,0,$x,$y,$taille[0] ,$taille[1])) {
echo '<script>alert("Modification de l\'image enregistrée.");</script>';
imagejpeg($dest_image, $destination);
}
else { echo '<script>alert("Il y a eu une erreur. Réessayez avec une autre image.");</script>';}
imagedestroy( $source_image);
imagedestroy( $dest_image);
unlink('deleteme.temp');
}
}
}
else echo '<script>alert("Il y a eu une erreur. Réessayez avec une autre image.");</script>';
}
else echo '<script>alert("Il y a eu une erreur. Réessayez avec une autre image.");</script>';
}
2 mai 2006 à 10:25
26 avril 2006 à 15:42
L'idée est bonne, je voulais faire ça à un moment.
Quelques remarques:
tu as oublié un " à la ligne 49.
Tu devrais mieux indenter ton code.
Tu devrais en faire une fonction, ce serait beaucoup mieux. En sachant qu'une bonne fonction renvoie true en cas de succès et false en cas d'échec.
Ce serait bien que ton code s'occupe d'un fichier qui existe sur le serveur plutôt que de le récupérer d'un formulaire, ce serait plus facile pour tt le monde à adapter sur son site.
Tu devrais enlever la partie qui change le nom ou l'extension du fichier, ça c'est à chacun de voir pour lui.
Pareil pour le répertoire de destination, tu devrais le mettre en paramètre de ta fonction. De même que les tailles voulues en largeur et hauteur.
On n'écrit pas imagejpeg("$dest_image, vignette/$nomf"); mais plutôt imagejpeg($dest_image, 'vignette/'.$nomf); et echo 'enregistrement OK
'; plutôt que echo ('enregistrement OK
');
Dans ta logique, tu vérifies si le fichier que tu as copié à la racine n'existe pas avant de le copier... c'est plutôt dans le répertoire de destination que tu devrais vérifier, et utiliser un nom temporaire le temps que tu stockes l'image à la racine, histoire d'être à peu près sûr que tu n'écrases rien. Mais je ne suis même pas sûr que tu sois obligé de copier le fichier avant de travailler dessus :il faudrait voir si imagecreate peut prendre un $_FILES comme paramètre.
sinon fais attention à la gestion d'erreur: ça peut afficher enregistrement ok alors qu'il y a eu échec.
C'est à peu près tt ce que j'avais à dire je crois, je noterai qd tu auras modifié ton script
à+