pour mon site, je dois créer des images de taille normal, et des images de taille réduites (miniatures).
L'image de taille normal ce crée bien grace à ce bout de code :
Mais pour la miniature sa m****, et uniquement avec le format jpeg !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 <?php // //ENVOIE DE L'IMAGE DANS LE REPERTOIRE ./images SOUS LE NOM D'ORIGINE // $nom = $_FILES['fichier']['name'];//Nom du fichier $tmp = $_FILES['fichier']['tmp_name'];//Chemin temporaire de l'image $ext = substr($nom, -3);//Extraction de l'extension //On vérifie que l'image ne prend pas trop de place et qu'elle n'est pas déjà en .gif if (($_FILES['fichier']['size'] < 2000000) || ($ext == 'gif')) { // On vérifie si le champ est rempli if(!empty($_FILES['fichier']['name'])) { if(move_uploaded_file($_FILES['fichier']['tmp_name'],$repCible.$_FILES['fichier']['name'])) { if (($ext == 'jpg') || ($ext == 'JPG')) { $source = imagecreatefromjpeg("" . $repCible . "" . $nom . ""); // La photo est la source } else { $fonction = 'imagecreatefrom'.$ext; $source = $fonction("" . $repCible . "" . $nom . ""); // La photo est la source } if (isset ($source)) { $hauteur = $_POST['hauteur']; $largeur = $_POST['largeur']; $destination = imagecreatetruecolor($largeur, $hauteur); // On crée la miniature vide // Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image $largeur_source = imagesx($source); $hauteur_source = imagesy($source); $largeur_destination = imagesx($destination); $hauteur_destination = imagesy($destination); // On crée la miniature imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source); // On enregistre la miniature //$nom = str_replace(substr($nom, -4), ".gif", $nom); //Met toujours une extension .gif mais pas réelement utile car le poids de l'image ne diminue pas, de plus cela provoque un problème de suppression du fichier source imagegif($destination, '' . $repCible . '' . $nom . ''); } else { echo 'Le format de cette image ne peut pas être prit en compte'; } } else { // Sinon on affiche une erreur système echo '<b>Problème lors de l\'upload !</b><br /><br /><b>', $_FILES['fichier']['error'], '</b><br /><br />'; } } else { // Sinon on affiche une erreur pour le champ vide echo '<b>Le champ du formulaire est vide !</b><br /><br />'; } } else { //Sinon on affiche une erreur car la taille est trop grande et on conseil le .gif echo 'Cette image est trop volumineuse, veuillez la convertir en .gif afin qu\'elle prenne moins de place'; } ?>
J'ai cette erreur
Pourtant, vous pouvez voir que dans mon codeWarning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg: JPEG library reports unrecoverable error: in D:\Program Files\EasyPHP 2.0b1\www\pierre\Include\miniature.inc.php on line 4
Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: 'D:/Program Files/EasyPHP 2.0b1/www/pierre/images/entreprise/historique/recette.jpg' is not a valid JPEG file in D:\Program Files\EasyPHP 2.0b1\www\pierre\Include\miniature.inc.php on line 4qui fonctionne, j'utilise aussi la fontion imagecreatefromjpeg !! Je ne vois pas pourquoi elle ne fonctionnerait pas cette fois ci.
Mon code pour les miniature est le suivant :
Je réutilise certaines variables du premier morceau de code car je les include les un sous les autres (avec l'image de taille normal en premier bien sur !!).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 <?php if (($ext == 'jpg') || ($ext == 'JPG')) { $source = imagecreatefromjpeg("" . $repCible . "" . $nom . ""); // La photo est la source } else { $fonction = 'imagecreatefrom'.$ext; $source = $fonction("" . $repCible . "" . $nom . ""); // La photo est la source } $destination = imagecreatetruecolor(100, 100); // On crée la miniature vide // Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image $largeur_source = imagesx($source); $hauteur_source = imagesy($source); $largeur_destination = imagesx($destination); $hauteur_destination = imagesy($destination); // On crée la miniature imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source); // On enregistre la miniature sous le nom "mini_couchersoleil.jpg" imagegif($destination, '' . $repCible . 'mini_' . $nom . ''); ?>
Enfin, voici le code qui appel ces fonctions et qui enregistre tous sa dans ma base de données :
Merci d'avance pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <?php include($_SERVER["DOCUMENT_ROOT"]."/pierre/Include/RemplacementBBCode.inc.php"); //Insertion du code de remplacement des balises BBCode en balises HTML $repCible = ($_SERVER["DOCUMENT_ROOT"]."/pierre/images/entreprise/historique/"); //Répertoire destination $hauteur = $_POST['hauteur']; $largeur = $_POST['largeur']; include($_SERVER["DOCUMENT_ROOT"]."/pierre/Include/Upload.inc.php"); //Insertion du code d'upload de l'image $repCible = ($_SERVER["DOCUMENT_ROOT"]."/pierre/images/entreprise/historique/"); //Répertoire destination include($_SERVER["DOCUMENT_ROOT"]."/pierre/Include/miniature.inc.php"); //Insertion du code d'upload de l'image miniature include($_SERVER["DOCUMENT_ROOT"]."/pierre/Include/mysql.inc.php"); //Connexion à la base de données $sql = "INSERT INTO historique (hist_id, hist_date, hist_descr, hist_img) VALUES ('','".mysql_real_escape_string($_POST['titre'])."','".$texte."','".mysql_real_escape_string($nom)."');"; mysql_query($sql, $cnx) or die("Erreur dans $sql"); mysql_close(); header("location:./index.php"); ?>
Partager