IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[GD] Erreur lors de la miniaturisation d'une image jpeg


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 89
    Points : 51
    Points
    51
    Par défaut [GD] Erreur lors de la miniaturisation d'une image jpeg
    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 :
    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';
    }
    ?>
    Mais pour la miniature sa m****, et uniquement avec le format jpeg !!

    J'ai cette erreur
    Warning: 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 4
    Pourtant, vous pouvez voir que dans mon code qui 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 :
    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 . '');
    ?>
    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 !!).

    Enfin, voici le code qui appel ces fonctions et qui enregistre tous sa dans ma base de données :
    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");
    ?>
    Merci d'avance pour votre aide.

  2. #2
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 89
    Points : 51
    Points
    51
    Par défaut
    Finalement j'ai réussi à résoudre mon problème après plusieurs heures à me creuser la tête !!
    En fait, j'enregistre mes images de taille normal en .gif et ensuite, même si sur le serveur mes images apparaissent avec l'extension .jpg, elles sont en réalité des images .gif !!

    Je ne sais toujours pas pourquoi elles s'affichent avec cette extension.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Erreur lors de l'insertion d'une image dans un tableau
    Par bigwade dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 16/05/2013, 15h24
  2. Réponses: 3
    Dernier message: 07/12/2005, 14h28
  3. [vb.net] erreur lors de l'éxécution d'une classe
    Par os_rasta dans le forum VB.NET
    Réponses: 10
    Dernier message: 01/12/2005, 18h34
  4. Erreur lors de l'ajout d'une table
    Par FredMines dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 27/07/2005, 13h13
  5. message d'erreur lors de la création d'une base
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/04/2004, 15h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo