Redimmensionner une Image avant upload .. - PHP - Programmation
Marsh Posté le 11-05-2005 à 19:43:16
Ce que tu veux, c'est qu'on t'explique un script que t'as chopé sur le net ??
Marsh Posté le 11-05-2005 à 19:50:47
heu c'est moi qui l'ai fait... ca svoit pas?
Marsh Posté le 11-05-2005 à 20:11:00
Ah bon, ok, si tu le dis
En tout cas, c'est codé comme un porc
1/ Utiliser la variable $_SERVER['DOCUMENT_ROOT']
2/ Les $HTTP_GET_VARS, c'est has-been Maintenant, on utilise les $_GET.
3/ Utiliser le chemin absolu des pages vers lequel on pointe à la place de faire des href="../../../../index.php" (ce qui veut dire que c'est aussi bien voire mieux d'utiliser href="/index.php". Je suppose ici que tu voulais ramener sur la page d'accueil du site.)
Quant aux questions que tu poses, tu as les réponses sous tes yeux.
Marsh Posté le 11-05-2005 à 20:18:33
Je suis de bonne humeur
$thumb est une ressource (créée par "$thumb =imagecreatetruecolor($newwidth, $newheight);" ).
Idem pour $source ($source = imagecreatefromjpeg($filename) sauf que là, cette resource n'est pas vide, elle contient l'image.
imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
=> recopie $source en utilisant la partie contenue entre 0 et $width (pour la largeur) et entre 0 et $height (pour la longueur) et le place dans $thumb, de la partie allant de 0 à $newwidth (pour la largeur) et entre 0 et $newheight (pour la longueur).
sté tellment simple
Marsh Posté le 11-05-2005 à 20:35:11
Master p a écrit : Ah bon, ok, si tu le dis |
tite réponse et explications,
j'ai utilisé $HTTP_GET_VARS car pour mon projet en iut, apache ne gérait pas le $_get...
Ensuite si j'utilise "/" pour désigner la racine du site, easyphp me renvoie dans 127.0.0.1, et non dans 127.0.0.1/monSite/ comme je le voudrais.
C'est quoi $_SERVER['DOCUMENT_ROOT'] ?
Merci pour tes réponses.
Comment je fais pour obtenir le nom de l'image ressource contenu dans $thumb?
Marsh Posté le 11-05-2005 à 20:40:30
$_SERVER['DOCUMENT_ROOT'] est la racine du serveur, mais dans ton cas (le serveur est mal configuré), ça te mèneras sur le répertoire parent.
Tu peux pas toucher à Apache ? sinon spa pratique
Marsh Posté le 11-05-2005 à 22:23:18
Franchement, c'est tellement porc ce code, que ça donne pas envie d'y plonger
Marsh Posté le 12-05-2005 à 00:07:21
jijiz a écrit : Comment je fais pour obtenir le nom de l'image ressource contenu dans $thumb? |
Bah, l'est dans $filename !!!
Marsh Posté le 12-05-2005 à 09:50:59
Hermes le Messager a écrit : Franchement, c'est tellement porc ce code, que ça donne pas envie d'y plonger |
oui et...?
pour que ta remarque soit plus constructive, peux tu m'aider à améliorer mon code?
Marsh Posté le 12-05-2005 à 09:51:31
donc au lieu de faire (rename($HTTP_POST_FILES["myFic"]["tmp_name"],$folderDest.$nameDest))
je fais
(rename($thumb,$folderDest.$nameDest))
??
merci à vous
Marsh Posté le 12-05-2005 à 12:33:52
Hermes le Messager a écrit : Franchement, c'est tellement porc ce code, que ça donne pas envie d'y plonger |
+1
edit: tu upload et ensuite seulement tu peux redimenssioner, car l'inverse c'est impossible, si tu veux que ton script redimenssione l'image, il faut que l'image soit sur le serveur, pas sur le pc du client
Marsh Posté le 12-05-2005 à 13:00:06
aspegic500mg a écrit : +1 |
Hmm je pensais qu'on pouvait redimmensionner une image avant de l'uploader. Merci
Marsh Posté le 12-05-2005 à 16:54:29
Nouvelle question, comment parcourrir tout un répertoire contenant des images?
Marsh Posté le 12-05-2005 à 17:07:58
Heu, faudrait un peu regarder la doc de PHP là quand même hein...
Tu vas sur php.net, tu télécharges la doc au format .chm en français (pratique pour les recherches) et tu cherches "fichier" ou "dossier" et tu regardes. Tu as non-seulement les fonctions s'y rapportant mais également les exemples de code etc... etc...
Un forum comme celui-ci ne remplace pas non plus la doc.
Marsh Posté le 11-05-2005 à 19:04:47
Bonjour,
Sur mon site, j'ai deux scripts, un qui permet de redimmensionner des images à la volée, et un autre d'upload:
Redimmensionner :
<?
$filename = "../../".$HTTP_GET_VARS[src_pic];
// we store here the dimensions maximum a picture can take
$size_max = 150;
// $percent = 0.17;
// Content type
$ext = substr($HTTP_GET_VARS[src_pic],-3);
$ext = strtolower($ext);
if ($ext == "jpg" )
{
header('Content-type: image/jpeg');
}
if ($ext == "gif" )
{
header('Content-type: image/gif');
}
if ($ext == "png" )
{
header('Content-type: image/png');
}
// Calcul des nouvelles dimensions
list($width, $height) = getimagesize($filename);
// we test if the image is larger than $size_max
if (($width > $size_max) || ($height > $size_max))
{
// The longer between $width and $height will be our limit
if ($width > $height)
{
$percent = $size_max / $width;
}else
{
$percent = $size_max / $height;
}
}
else
{
$percent = 1;
}
$newwidth = $width * $percent;
$newheight = $height * $percent;
// chargement
$thumb =imagecreatetruecolor($newwidth, $newheight);
if ($ext == "jpg" )
{
$source = imagecreatefromjpeg($filename);
}
if ($ext == "gif" )
{
$source = imagecreatefromgif($filename);
}
if ($ext == "png" )
{
$source = imagecreatefrompng($filename);
}
// Redimensionnement
imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
// Affichage
if ($ext == "jpg" )
{
imagejpeg($thumb);
}
if ($ext == "gif" )
{
imagegif($thumb);
}
if ($ext == "png" )
{
imagepng($thumb);
}
?>
Upload :
<html><head>
<SCRIPT LANGUAGE='javascript'>
function control()
{
var test_name = document.add_pic.nm_picture.value
var test_src = document.add_pic.myFic.value
if (test_name== "" )
{
alert ("Type a name for the picture." );
return false;
}
if (test_src == "" )
{
alert ("Choose an image file to upload." );
return false;
}
return true;
}
</SCRIPT>
</head>
<?
if ( count ($HTTP_POST_VARS) == 0 )
{
?>
<?
// We get all the picture category
// We display all the image category:
$request = "select * from gallery_cat";
$answer = mysql_query($request)
or die (mysql_error($anwser));
?>
<center><h1>Add a picture in the Gallery</h1></center>
<table border = 0 align = center>
<tr><td>
<FORM NAME = "add_pic" ACTION = "content/undermenu/gallery/add.php" METHOD = "POST" ENCTYPE = "multipart/form-data" OnSubmit = "return control()">
Name : </td><td><INPUT TYPE = text NAME = "nm_picture" id = "nm_picture" size = 20 maxlength= 20></td></tr>
<tr><td>Source : </td><td><input type = "file" name = "myFic" id = "myFic" size = 23 </td></tr>
<?
echo "<tr><td>Category :</td><td><select name = cat>";
while ($row = mysql_fetch_array($answer))
{
echo "<option value = $row[id_cat]>$row[name_cat]";
}
echo "</select>";
?>
</table><br>
<center><INPUT TYPE = submit VALUE = Ok><INPUT TYPE = reset VALUE = Clear > </center>
<?
}else
{?>
<html>
<head>
<META HTTP-EQUIV = "refresh" "content = "3;URL = ../../../index.php?page=gallery">
</head>
<?
include "../../../../conn.php";
// errors
$err = "";
// folder of destination
$folderDest = "../../../../content/gallery/";
$nameDest = $HTTP_POST_FILES["myFic"]["name"];
$ext = substr($HTTP_POST_FILES["myFic"]["name"],-3);
if (!(file_exists($folderDest.$nameDest)))
{
$ext = strtolower($ext);
// We check the extention of the file
if (($ext == "jpg" ) || ($ext == "gif" ) || ($ext == "png" ))
{
if (is_uploaded_file($HTTP_POST_FILES["myFic"]["tmp_name"]))
{
if (rename($HTTP_POST_FILES["myFic"]["tmp_name"],$folderDest.$nameDest))
{
$err = "";
} else
{
$err = "folder";
}
} else
{
$err = "size";
}
}else
{
echo "<center>Bad type of file</center>";
$err = "ext";
}
}else
{
$err = "";
}
// The file is now uploaded, we can add informations in the database
if ($err == "" )
{
$racine = "content/gallery/";
$picture= $racine.$HTTP_POST_FILES["myFic"]["name"];
$requete = "INSERT INTO gallery VALUES (LAST_INSERT_ID() ,'".$HTTP_POST_VARS['nm_picture']."','$picture',\"$_POST[cat]\" );";
$reponse = mysql_query($requete)
OR DIE (mysql_error());
echo "<center>Picture added :<br><br><img src = ../../../../$picture></center>";
echo "<center><a href=\"javascript:history.back()\">Back to Administration</a>" ;
}else
{
echo "<center>Error : $err";
}
}
?>
Je ne vois pas comment faire pour redimmensionner l'image puis de l'uploader
imagecopyresampled($thumb, $source, 0,... quel est le type de "$thumb? puis le donner a manger à mon script d'upload? Comment récupérer le nom du fichier contenu par $thumb.
Merci