Redimension images a l'upload sans proportion

tynmar Messages postés 77 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 28 février 2006 - 24 févr. 2006 à 16:03
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 28 févr. 2006 à 17:33
Bonjour tout le monde,
J'aimerai modifier la taille d'une image à l'upload. J'ai écrit mon script d'upload et maintenant je n'arive pas à la redimensionner. Je ne souhaite pas garder les proportions mais imposer une largeur et une hauteur, peu importe si l'image se déforme.
Je n'ai trouvé que des choses assez compliquées sur le web.
Voici mon script.
Merci beaucoup


$logo_name = $_FILES['logo_name']['name'];
$taille_octets_max = 10000000;//taille maximum du fichier
if ($logo_name == "none" || !$logo_name){
$logoimg = "";
$error2 = "Vous avez choisi de ne pas afficher de logo";
if(isset($_POST['imgbgor'])){
$error2 = "Vous avez choisi de restaurer le logo d'origine";
$logoimg = "logo_top_left.jpg";
}
}elseif($_FILES['logo_name']['type'] != "image/png" && $_FILES['logo_name']['type'] != "image/jpeg"
&& $_FILES['logo_name']['type'] != "image/pjpeg" && $_FILES['logo_name']['type'] != "image/x-png"
&& $_FILES['logo_name']['type'] != "image/gif"){
$error2="Le fichier doit être un JPEG, un GIF ou un PNG.";
}elseif($_FILES['logo_name']['size'] > $taille_octets_max){
$error2="Le fichier doit peser moins de ".($taille_octets_max/1024)." Ko.";
}
if(!isset($error2)){
$size_img = getimagesize($_FILES['logo_name']['tmp_name']);
$size_img[0] = 256;//redimension de l'image qui marche pas. Il doit manquer pas mal de choses là.
$size_img[1] = 65;

$dest_rep="../picts/";
$nom_img=$_FILES['logo_name']['name'];
if(file_exists($dest_rep.$nom_img)) {
$nom_img = preg_replace("/\.([a-zA-Z]{3,4})$/i", "_".time().".\\1", $nom_img);
}
$logoimg = $nom_img;
if (move_uploaded_file($_FILES['logo_name']['tmp_name'], $dest_rep.$nom_img)){
$url = "[http://%22.$_server['http_host'].dirname($_server['php_self']).%22/$dest_rep%22.$nom_img http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/$dest_rep".$nom_img];
?>




&nbsp;Le fichier <? echo $logo_name?> est valide, et a &eacute;t&eacute; t&eacute;l&eacute;charg&eacute; avec succ&eacute;s.

&nbsp;Nom du fichier copi&eacute; : <?=$nom_img?>

&nbsp;URL sur le serveur : [<?=$url?> <?=$url?>]

&nbsp;Taille : <?=$_FILES['logo_name']['size']/1024?> Ko



<?php
}else{
print("Copie &eacute;chou&eacute;e : ".$_FILES['logo_name']['error2']."
");
unlink($_FILES['logo_name']['tmp_name']);
}
}

6 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
24 févr. 2006 à 17:12
Hello,

$size_img = getimagesize($_FILES['logo_name']['tmp_name']);
$size_img[0] = 256;//redimension de l'image qui marche pas. Il doit manquer pas mal de choses là.
$size_img[1] = 65;

Ce serait trop facile si ça marchait comme ça ;-)

Pour redimensionner des images sur ton serveur, tu DOIS passer par GD.

Un tuto là-dessus :
http://www.phpcs.com/tutoriaux/MINIATURES-THUMBNAILS-AUTOMATIQUES_269.aspx
0
tynmar Messages postés 77 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 28 février 2006
28 févr. 2006 à 16:15
Je dois être vraiment trop con, je n'y arrive pas. Il y a des tonnes de variables et je capte tchi. Je me renseigne sur le GD, mais je persiste à dire que c'est quand même pas évident.

Merci de me dire si vous avez des pistes
0
tynmar Messages postés 77 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 28 février 2006
28 févr. 2006 à 16:29
je tiens à dire que les scripts que je trouve me permette de redimmensionner une image sur serveur et pas à l'upload, ce qui n'a rien à voir. Moi j'ai ç pour l'instant, mais je suis vraiment une grosse quiche lorraine en PHP :

$logo_name = $_FILES['logo_name']['name'];
$taille_octets_max = 10000000;//taille maximum du fichier
if ($logo_name == "none" || !$logo_name){
$logoimg = "";
$error2 = "Vous avez choisi de ne pas afficher de logo";
if(isset($_POST['imgbgor'])){
$error2 = "Vous avez choisi de restaurer le logo d'origine";
$logoimg = "logo_top_left.jpg";
}
}elseif($_FILES['logo_name']['type'] != "image/png" && $_FILES['logo_name']['type'] != "image/jpeg"
&& $_FILES['logo_name']['type'] != "image/pjpeg" && $_FILES['logo_name']['type'] != "image/x-png"
&& $_FILES['logo_name']['type'] != "image/gif"){
$error2="Le fichier doit être un JPEG, un GIF ou un PNG.";
}elseif($_FILES['logo_name']['size'] > $taille_octets_max){
$error2="Le fichier doit peser moins de ".($taille_octets_max/1024)." Ko.";
}
if(!isset($error2)){
/*$size_img = getimagesize($_FILES['logo_name']['tmp_name']);
$size_img[0] = 256;
$size_img[1] = 65;
*/
$Source = $_FILES['logo_name']['tmp_name'];
$src_info=getimagesize($Source);

$dst_w = 256;
$dst_h = 65;

$dst_x = 0;
$dst_y = 0;
$dst=imagecreatetruecolor(THB_W,THB_H);
imagecopyresampled($dst, $src, $dst_x, $dst_y, 0, 0, $dst_w, $dst_h , $src_info[0], $src_info[1]);
@unlink($Destination);

imagejpeg($dst, $Destination, 100)

$dest_rep="../picts/";
$nom_img=$_FILES['logo_name']['name'];
if(file_exists($dest_rep.$nom_img)) {
$nom_img = preg_replace("/\.([a-zA-Z]{3,4})$/i", "_".time().".\\1", $nom_img);
}
$logoimg = $nom_img;
if (move_uploaded_file($_FILES['logo_name']['tmp_name'], $dest_rep.$nom_img)){
$url = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/$dest_rep".$nom_img;
?>




Le fichier <? echo $logo_name?> est valide, et a été téléchargé avec succés.

Nom du fichier copié : <?=$nom_img?>

URL sur le serveur : [<?=$url?> <?=$url?>]

Taille : <?=$_FILES['logo_name']['size']/1024?> Ko



<?php
}else{
print("Copie échouée : ".$_FILES['logo_name']['error2']."
");
unlink($_FILES['logo_name']['tmp_name']);
}
}
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
28 févr. 2006 à 16:48
Tu ne peux pas redimensionner une image AVANT l'upload...ton image est soit sur le poste client (manquerait plus que tu puisses y accéder, et y modifier une image! Je n'aimerais pas ça moi...toi non plus je pense, si un site pouvait accéder à TON pc, et redimensionner les images qu'il veut...), soit sur ton serveur.
Tu ne peux faire quelque chose que si elle sont sur ton serveur.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tynmar Messages postés 77 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 28 février 2006
28 févr. 2006 à 17:06
Ok, c'est évidemment ce que je pensais, mais avant de faire unlink($_FILES['logo_name']['tmp_name']); il est impossible de redéfinir la taille de l'image ? C'est à dire, il faut je la pose sur mon serveur, et je modifie la taille ou alors je modifie la taille en la posant sur le serveur ? Est-ce que je me fais bien comprendre ?
En tout cas, merci beaucoup malalam, c'est vraiment sympa de s'occuper de novices qui atterrissent. Merci bokou
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
28 févr. 2006 à 17:33
Une fois quye tu as fait ton move_uploaded_file() , l'image est sur ton serveur, ok ?
Là, tu peux la redimensionner. Via GD. Tu crées une ressource imagfe avec imagecreatefrommachin, tu vois du côté des fonctions imagecopyresampled() , tu as un exemple ici :
http://fr2.php.net/manual/fr/function.imagecopyresampled.php
Puis tu sauves avec imagemachin(ressource, filename)
0
Rejoignez-nous