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] imagecreatetruecolor() pour grandes images


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 79
    Par défaut [GD] imagecreatetruecolor() pour grandes images
    Salut tout le monde,

    Je suis un petit nouveau du forum, mais pas tout a fait novice en prog sans etre un crack .
    Alors voila mon enigme :

    J'ai mis en place un système de réduction d'images pour que l'utilisateur dépose son image et qu'elle soit réduite automatiquement. Ça marche super en local, mais sur le serveur de production, si l'image est un peu grande, la fonction imagecreatetruecolor() ne marche pas et ne retourne pas false ni aucun message d'erreur.
    Dans mon test sur la largeur max, largeur_max vaut 580px.
    Avec une image de 600px de large ça marche très bien, la réduction se fait bien a 580. Mais avec une de 1550px, c'est le drame !

    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
     
    //Upload is ok, Image reductions
    if ((strtolower(substr($_FILES['image']['name'], -4))==".jpg")||(strtolower(substr($_FILES['image']['name'], -5))==".jpeg")) {
    	$image_init=imagecreatefromjpeg("$path_file");
    	$largeur=imagesx($image_init);
    	$hauteur=imagesy($image_init);
    	//Principal image reduction
    	if (($largeur>$largeur_max)){ 
    			$image=@imagecreatetruecolor($largeur_max, $largeur_max*$hauteur/$largeur)
    					or die ("Error during image resizing !"); 
    		$imgX = imagesx($image);
    		$imgY = imagesy($image);
    		if(imagecopyresampled($image, $image_init, 0, 0, 0, 0, imagesx($image), imagesy($image), $largeur ,$hauteur)){
    			imagejpeg($image, "$path_file");
    			imagedestroy($image);
    		} else {
    			exit("Error during image resizing !");
    		}
    	} else {
    		$imgX = $largeur;
    		$imgY = $hauteur;
    	}
    Quelqu'un a-t-il une petite idée ?

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Bonjour,

    Plus l'image est grande en taille, plis celle-ci est lourde en poids.

    Cela signifit que si ton image dépasse certaines dimensions, elle deviendra trop lourde en poids (Ko) alors qu'elle doit être inférieure à la valeur de la directive max_file_size.

    En gros il faut pas que ton fichier dépasse un certains poids.

    Peut-tu faire un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ini_get('upload_max_filesize')
    ou init_get('memory_limit') si le problème ne se produit que lors de la génération de la miniature.

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 79
    Par défaut
    Bonjour,

    Merci pour ta réponse !

    Cependant, j'ai déjà un test sur la volumétrie max serveur qui est de 2Mo, soit largement supérieure au poids des images que j'essaye de poser (environ 700ko). Si les images sont trop lourdes, le système averti l'utilisateur.
    Ca ne vient donc pas de là...


    D'autres idées ?

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 79
    Par défaut Precisions
    Je n'ai toujours pas réussi a corriger mon problème.

    Cependant, une petite précision pour infirmer l'hypothèse de la limite serveur, lorsqu'on utilise le script pour envoyer une image, la réduction ne se fait pas, mais l'upload se fait bien et l'image s'affiche non réduite dans la page, ce qui est pas top.

    La fonction imagecreatetruecolor a-t-elle une limite dans la taille ou le poid de l'image ?

    Quelqu'un a une idée ?

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 79
    Par défaut
    Bonjour à tous,

    Malgré l'absence d'autres réponses, j'ai continué à chercher et j'ai trouvé, non pas une solution, mais une explication.

    Pour ceux que ça intéresse : il semblerait qu'il s'agisse d'un dépassement de mémoire de l'hébergeur. Quand on dépose l'image sur le répertoire tmp d'upload du serveur, puis le déplacement de l'image vers le rep de travail, ça utilise beaucoup de mémoire; donc lorsque ensuite on demande à imagecreatetruecolor de créer une image noire, qui doit être créée en mémoire.... ça explose !

    Ce que je ne comprend toujours pas c'est pourquoi jusqu'à maintenant je n'avais aucun message de dépassement mémoire, et maintenant j'en ai un !
    Pourtant les symptômes et les résultats sont les mêmes...

    Bref... donc je n'ai plus qu'à dire à l'utilisateur de ne pas mettre d'image trop grande !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/07/2016, 06h30
  2. Quelle librairie pour faire des panoramas de très grandes images
    Par alexandre.granier dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 19/10/2012, 11h33
  3. [Débutant] utiliser scrollbar pour dimensionner une grande image
    Par farid0031 dans le forum C++Builder
    Réponses: 1
    Dernier message: 09/05/2011, 03h36
  4. Réponses: 5
    Dernier message: 18/05/2009, 17h32
  5. Div ou autre balise pour la découpe de grande image?
    Par atira dans le forum Mise en page CSS
    Réponses: 14
    Dernier message: 23/03/2008, 12h46

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