Partage
  • Partager sur Facebook
  • Partager sur Twitter

upload d'image PNG via formulaire

JPG ok mais png NOK

Sujet résolu
    18 novembre 2017 à 18:53:53

    Bonjour,

    Je cherche à intégrer la possibilité d'intégrer une image à la fiche produit que je cré via un formulaire en php.

    Lorsque je met une image au format jpg ou jpeg ça fonctionne parfaitement (upload, les verifs de rigueur, le renomage du fichier et le déplacement vers le bon dossier de stockage).

    Lorsque je fais la même chose avec une image en png, tous se passe parfaitement bien également. Le seul problème c'est que l'image créée comporte des erreurs et impossible de comprendre pourquoi après 3 jours de recherches sur les forums et les cours.

    J'ai actuellement suivi plusieurs cours pour arriver à faire ça :

    https://openclassrooms.com/courses/upload-de-fichiers-par-formulaire

    https://openclassrooms.com/courses/gd-redimensionner-une-image-sans-la-deformer

    Le code qui nous intéresse :

    if( $typemime ==='image/jpeg' || $typemime ==='image/pjpeg')
    	{
    		
    	$imageinitjpg = imagecreatefromjpeg($_FILES['IngPicture']['tmp_name']);
    	$dimimagejpg = getimagesize($_FILES['IngPicture']['tmp_name']);
    	$newheightimagejpg = ($dimimagejpg[1]/$dimimagejpg[0])*$newwidthimage ;
    	
    	$newimagejpg = imagecreatetruecolor($newwidthimage , $newheightimagejpg) or die ("Erreur lors du dimensionnement");
    	
    	imagecopyresampled($newimagejpg , $imageinitjpg , 0, 0, 0, 0, $newwidthimage, $newheightimagejpg, $dimimagejpg[0] , $dimimagejpg[1]);														
    	imagedestroy($imageinitjpg);
    	imagejpeg($newimagejpg, $uploaddir.$NomImageExploitable.'.jpg', 100);
    	echo '	<div class="Validation_form"><p>5- Image enregistrée. URL : '.$uploaddir. $NomImageExploitable.'.jpg</p> 
    			<img src="'.$uploaddir. $NomImageExploitable.'.jpg">';
    	
    	} else {
    	header("Content-type: image/png");
    	$imageinitpng = imagecreatefrompng($_FILES['IngPicture']['tmp_name']);
    	$dimimagepng = getimagesize($_FILES['IngPicture']['tmp_name']);
    	$newheightimagepng = ($dimimagepng[1]/$dimimagepng[0])*$newwidthimage ;
    	
    	$newimagepng = imagecreatetruecolor($newwidthimage , $newheightimagepng) or die ("Erreur lors du dimensionnement");
    	
    	imagecopyresampled($newimagepng , $imageinitpng , 0, 0, 0, 0, $newwidthimage, $newheightimagepng, $dimimagepng[0] , $dimimagepng[1]);														
    	imagedestroy($imageinitpng);
    	imagepng($newimagepng, $uploaddir.$NomImageExploitable.'.png', 100);
    	echo '	<div class="Validation_form"><p>5- Image enregistrée. URL : '.$uploaddir. $NomImageExploitable.'.png</p> 
    			<img src="'.$uploaddir. $NomImageExploitable.'.png">';
    															
    	}
    

    Auriez vous une idée sur la source du problème ?

    Pour info (même si je ne pense pas que ça ait une importance ... , la version PHP est 7.1).

    Merci



    -
    Edité par TonyDifi 19 novembre 2017 à 2:09:00

    • Partager sur Facebook
    • Partager sur Twitter

    Tony

      19 novembre 2017 à 12:20:29

      Bonjour,

      Si j'en crois la première ligne du code tu contrôles le type mine du fichier et uniquement pour les jpeg et pjpeg, donc il va falloir autoriser le bon type mine pour les png.

      • Partager sur Facebook
      • Partager sur Twitter
      Merci de signaler votre sujet résolu, cela nous évite des pages de lecture inutile pour arriver au bout de 15 réponses sur la dernière qui dit "merci problème résolut!"
        19 novembre 2017 à 12:40:13

        Bonjour,

        Merci pour ton retour,

        En fait je test le type mime plus haut. ici le if vient juste séparer le traitement s'il s'agit d'un jpg ou d'un png

        if jpg alors ça traite en format jpg

        sinon ça traite en format png.

         => bon en fait j'ai trouvé la solution à force de fouiller et apporter les bons correctifs :

        pour commencer : header("Content-type: image/png"); mal placé devait être avant tout code html (donc comme ce script est intégré par include dans une page index.php ... ça ne pouvait pas marché) J'ai donc déplacé la ligne en tête du fichier index.php

        D'autre part mauvaise utilisation de imagepng() j'ai mit une valeur de 100 en parametre 3 comme pour imagejpeg() mais en fait ce sont 2 paramètres différents .... donc j'ai mit 0 pour éviter toute compression.

        Voila, je le met au cas où ça servirait à quelqu'un ;)

        -
        Edité par TonyDifi 19 novembre 2017 à 14:21:11

        • Partager sur Facebook
        • Partager sur Twitter

        Tony

        upload d'image PNG via formulaire

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown