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 :

[ImageMagick] imagejpeg : impossible d'enregistrer l'image


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut [ImageMagick] imagejpeg : impossible d'enregistrer l'image
    salut,
    je suis en train d'écrire un peu script pour redimensionner des images placées dans un dossier. J'ai un message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Warning: imagejpeg() [function.imagejpeg]: Unable to open 'photo' 
    for writing in /var/www/test/resizeImg/resize_function.php on line 52
    voici ma fonction :
    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
    function resize($file){
    	$path = $this->f.'/'.$file;
    	$imgSrc = imagecreatefromjpeg($path);
    	$newImg = imagecreatetruecolor($this->w,$this->h);
    	imagecopyresampled($newImg,$imgSrc,0,0,0,0,$this->w,$this->h,$width,$height);	
    	if (imagejpeg($imgSrc,$this->newFolderName)){ //**LIGNE 52****
    		imagedestroy($imgSrc);
    		imagedestroy($newImg);
    		return true;
    	}
    	else {
    		imagedestroy($imgSrc);
    		imagedestroy($newImg);
    		$this->result = $file.' problem <br>';
    		return false;
    	}
    }
    pourtant mon dossier est bien accessible en écriture. J'ai même fait un chmod 777 pour être sûr !!

  2. #2
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    essaye de faire ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // Remplace ceci
    imagecopyresampled($newImg,$imgSrc,0,0,0,0,$this->w,$this->h,$width,$height);
     
    // Par ceci
    imagecopyresized($newImg, $imgSrc, 0, 0, 0, 0, $this->w, $this->h, $width, $height);
    Mais je ne comprend pas d'où viennent les varaible $width et $height moi je ferais ceci ==> imagesx($imgSrc) et imagesy($imgSrc)
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  3. #3
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    salut,
    merci pour ta réponse. Malheureusement ça ne fonctionne pas.

    En fait, si j'affiche l'image dans le navigateur au lieu de l'enregistrer, c'est ok.

    Le souci semble donc provenir de la fonction imagejpeg(); quand je mets le second argument pour sauver le fichier.

    je viens de re-re-re-re-re-vérifier que mon dossier est bien autorisé en écriture !

    Sinon concernant les valeurs $width et $height, j'avais viré quelques lignes de la fonction pour n'afficher que le principal. Je mets tout ci-dessous :
    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
    function resize($file){
    	$path = $this->f.'/'.$file;
    	$imgSrc = imagecreatefromjpeg($path);
    	list($width,$height) = getimagesize($path);
    	$this->setRatio($width,$height);
    	$newImg = imagecreatetruecolor($this->w,$this->h);
    	//imagecopyresampled($newImg,$imgSrc,0,0,0,0,$this->w,$this->h,$width,$height);	
    	imagecopyresized($newImg, $imgSrc, 0, 0, 0, 0, $this->w, $this->h, $width, $height);
    	if (imagejpeg($newImg,$this->newFolderName)){  //** ne fonctionne pas ****
    	//if (imagejpeg($newImg)){ 	//** fonctionne bien ****
    		imagedestroy($imgSrc);
    		imagedestroy($newImg);
    		return true;
    	}
    	else {
    		imagedestroy($imgSrc);
    		imagedestroy($newImg);
    		return false;
    	}
    }

  4. #4
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    ton $this->newFolderName il te retourne quoi ?
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  5. #5
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    je viens de trouver, enfin en regardant le code mis sur php.net à la fonction imagejpeg.
    Yoteco était sur la bonne piste également. C'est tout bête mais j'indiquais le chemin du dossier sans indiquer le nom du fichier derrière.
    ce qui donne :
    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
    function resize($file){
    	$srcPath = $this->f.'/'.$file;
    	$destPath = $this->newFolderName.'/'.$file;
    	$imgSrc = imagecreatefromjpeg($srcPath);
    	list($width,$height) = getimagesize($srcPath);
    	$this->setRatio($width,$height);
    	$newImg = imagecreatetruecolor($this->w,$this->h);
    	imagecopyresized($newImg, $imgSrc, 0, 0, 0, 0, $this->w, $this->h, $width, $height);
    	if (imagejpeg($newImg,$destPath)){
    		imagedestroy($imgSrc);
    		imagedestroy($newImg);
    		return true;
    	}
    	else {
    		imagedestroy($imgSrc);
    		imagedestroy($newImg);
    		return false;
    	}
    }
    merci pour votre aide

  6. #6
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

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

Discussions similaires

  1. [AC-2003] impossible de copier une image par enregistrement
    Par sabredebois dans le forum Modélisation
    Réponses: 2
    Dernier message: 20/12/2009, 19h24
  2. Impossible d'enregistrer des images dans la BDD
    Par cashmoney dans le forum JDBC
    Réponses: 0
    Dernier message: 30/09/2009, 17h39
  3. Réponses: 4
    Dernier message: 25/02/2008, 21h26
  4. [ImageMagick] Enregistrement d'images
    Par generalalaczar dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 15/09/2006, 19h31
  5. [ImageMagick] Enregistrer l'image redimensionnée
    Par tilou dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 22/02/2006, 08h57

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