Problème d'enregistrement d'image au format PNG

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème d'enregistrement d'image au format PNG

Re: Problème d'enregistrement d'image au format PNG

par blackshadows » 07 déc. 2011, 12:02

Bonjour,
Voici la solution a mon problème:
<?php
if(isset($_FILES['uploadFile'])){
$filename = $_FILES['uploadFile']['name'];
$path = pathinfo($filename);
echo $filesext = $path['extension'];
$filesext = strtolower($filesext);
$extensions_autorisees = array('jpg','jpeg','pjpg','pjpeg','jpg','png','gif','tiff');
$destpath = './uploads_img/';


if ($_FILES['uploadFile']['error'] <= 0){
}else{
$errors.='Erreur lors de l\'upload image';
exit($errors);
}

if ($_FILES['uploadFile']['size'] <= 2097152){
}else{
$errors.='L\'image est trop lourde';
exit($errors);
}

if(in_array($filesext,$extensions_autorisees)){
}else{
$errors.='Le type MIME de l\'image n\'est pas bon';
exit($errors);
}

$img = @getimagesize($_FILES['uploadFile']['tmp_name']);


    if($filesext==='jpg' && ($img['mime']==='image/jpg' || $img['mime']==='image/jpeg' || $img['mime']==='image/pjpeg')){
    $jpgimg = imagecreatefromjpeg($_FILES['uploadFile']['tmp_name']);
    $tjpgimg = getimagesize($_FILES['uploadFile']['tmp_name']);
    $newlarg = 350; 
    $newhaut = ( ($tjpgimg[1] * (($newlarg)/$tjpgimg[0])) );
    $newjpgimg = imagecreatetruecolor($newlarg,$newhaut) or die ("Erreur");
    imagecopyresampled($newjpgimg,$jpgimg,0,0,0,0,$newlarg,$newhaut,$tjpgimg[0],$tjpgimg[1]);
    imagedestroy($jpgimg);
    $filerename = 'fichier_du_'.date('YmdHis').'.'.$filesext;
    imagejpeg($newjpgimg ,$destpath.$filerename,100);
    }
    
    elseif($filesext==='png' && ($img['mime']==='image/png' || $img['mime']==='image/x-png')){
    $pngimg = imagecreatefrompng($_FILES['uploadFile']['tmp_name']);
    $tpngimg = getimagesize($_FILES['uploadFile']['tmp_name']);
    $newlarg = 350;
    $newhaut = ( ($tpngimg[1] * (($newlarg)/$tpngimg[0])) );
    $newpngimg = imagecreatetruecolor($newlarg,$newhaut) or die ("Erreur");
    imagecopyresampled($newpngimg,$pngimg,0,0,0,0,$newlarg,$newhaut,$tpngimg[0],$tpngimg[1]);
    imagedestroy($pngimg);
    $filerename = 'fichier_du_'.date('YmdHis').'.'.$filesext;
    imagepng($newpngimg, $destpath.$filerename,0);             
    }
    
    elseif($filesext==='gif' && ($img['mime']==='image/gif')){
    $gifimg = imagecreatefromgif($_FILES['uploadFile']['tmp_name']);
    $tpngimg = getimagesize($_FILES['uploadFile']['tmp_name']);
    $newlarg = 350;
    $newhaut = ( ($tpngimg[1] * (($newlarg)/$tpngimg[0])) );
    $newpngimg = imagecreatetruecolor($newlarg,$newhaut) or die ("Erreur");
    imagecopyresampled($newpngimg,$pngimg,0,0,0,0,$newlarg,$newhaut,$tpngimg[0],$tpngimg[1]);
    imagedestroy($pngimg);
    $filerename = 'fichier_du_'.date('YmdHis').'.'.$filesext;
    imagegif($newpngimg, $destpath.$filerename,0);             
    }
        
    else{
    }
           
}else{
}      	


?>

Re: Problème d'enregistrement d'image au format PNG

par xTG » 06 déc. 2011, 17:47

Relis mon message...
Indentes correctement ton code et tu comprendras le problème.

Re: Problème d'enregistrement d'image au format PNG

par blackshadows » 06 déc. 2011, 16:01

Bonjour, mercipour ta rèponse le png est traité dans la deuxième partie du php:
if ($filesext == 'png')
                            		{
                              
							  			$pngimg = getimagesize($_FILES['uploadFile']['tmp_name']);

							  
                              	if($pngimg['mime'] == $mimeext[$filesext] || $pngimg['mime'] == $mimeextie[$filesext])
							   	{
											 }
                                        	else
                                        	{
                                                echo 'Le type MIME de l\'image n\'est pas bon';
                                        	}
                                        $pngimg = imagecreatefrompng($_FILES['uploadFile']['tmp_name']);
                                        $tpngimg = getimagesize($_FILES['uploadFile']['tmp_name']);
                                        $newlarg = 350;
 
                                        $newhaut = ( ($tpngimg[1] * (($newlarg)/$tpngimg[0])) );
 
                                        $newpngimg = imagecreatetruecolor($newlarg , $newhaut) or die ("Erreur");
 
                                        imagecopyresampled($newpngimg , $pngimg  , 0,0, 0,0, $newlarg, $newhaut, $tpngimg[0],$tpngimg[1]);
                                              imagedestroy($pngimg);
                                             
                                               $filerename = 'fichier_du_'.date('YmdHis').'.'.$filesext;
                                              
                                              
                                              imagepng($newpngimg, 'uploads_img/'.$filerename,0 );             
 										}
                                		else
                                		{
                                    	//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                                		}

Re: Problème d'enregistrement d'image au format PNG

par xTG » 06 déc. 2011, 15:44

if ($filesext == 'jpg' || $filesext == 'jpeg' || $filesext == 'pjpg' || $filesext == 'pjpeg')
Pas de png dans cette ligne.
Alors que le code se trouve dedans (alors qu'il a rien à y faire vu que c'est le traitement des jpeg), donc jamais exécuté.
Pas du traitement du else.
Donc il est normal que ton script ne fasse rien.

Problème d'enregistrement d'image au format PNG

par blackshadows » 06 déc. 2011, 15:24

Bonjour,
Je suis entrain de créer un script pour upload et le redimensionnement d'images:
Avec les fichiers JPG tous ce passe bien, avec les fichiers PNG je n'ai aucun message d'erreur mais le fichiers n'est pas enregistré!
D'avance merci pour vos réponses...(je publie la totalité de mon script il y a un appel a du JS puis le formulaire et la partie PHP désolé pour la longueur...)

JS:

Code : Tout sélectionner

<script type="text/javascript"> <!-- function uploadInit() { // Je pré-charge l'image var oLoading = new Image(); oLoading.src = "loading.gif"; } function uploadRun() { document.getElementById("uploadStatus").innerHTML = "<img src=\"/default/images/loading.gif\" alt=\"OK...\" width=\"220\" height=\"19\" />"; document.getElementById("uploadSubmit").disabled = true; return true; } function uploadEnd(sError, sPath) { if(sError == 'OK') { document.getElementById("uploadStatus").innerHTML = "<a href=\"" + sPath + "\" title=\"Go to " + sPath + "\">t&eacute;l&eacute;chargement r&eacute;ussi!</a>"; } else { document.getElementById("uploadStatus").innerHTML = sError; } document.getElementById("uploadSubmit").disabled = false; } //--> </script>
HTML:
</head>
    <body onunload="uploadInit();">

<form id="uploadForm" enctype="multipart/form-data" action="test5.php" target="uploadFrame" onsubmit="uploadRun();" method="post" value="2097152">

<p>&nbsp;</p>  
              
                   <p><input id="uploadFile" name="uploadFile" type="file" />
                       
                   <input  id="uploadSubmit" type="submit" value="t&eacute;l&eacute;charger" /></p>

   
   <div align="left" class="vert" id="uploadStatus"></div>
                
        
        
        <iframe id="uploadFrame" name="uploadFrame" src="#"></iframe> 

</form>
PHP:
<?php

        if(isset($_FILES['uploadFile']))
        {

                if ($_FILES['uploadFile']['error'] <= 0)
                {
                        if ($_FILES['uploadFile']['size'] <= 2097152)
                        {
                            $filename = $_FILES['uploadFile']['name'];
 
                         
							$path = pathinfo($filename);
				
							$filesext = $path['extension'];
							
                            $filesext = strtolower($filesext);
							
						$extensions_autorisees = array('jpg', 'jpeg', 'pjpg', 'pjpeg', 'JPG', 'png', 'gif', 'tiff');
						if (in_array($filesext, $extensions_autorisees))
						{	   
							$mimeext = array('jpg' => 'image/jpeg', 'jpeg'=>'image/jpeg', 'png'=>'image/png', 'gif'=>'image/gif', 'tiff'=>'image/tiff' );
							$mimextie = array('jpg' => 'image/pjpeg', 'jpeg'=>'image/pjpeg');

                        if ($filesext == 'jpg' || $filesext == 'jpeg' || $filesext == 'pjpg' || $filesext == 'pjpeg')
                            {
							
							$jpgimg = getimagesize($_FILES['uploadFile']['tmp_name']);
                              
                              if($jpgimg['mime'] == $mimeext[$filesext] || $jpgimg['mime'] == $mimeextie[$filesext])
				{
						}
                                        	else
                                        	{
                                                echo 'Le type MIME de l\'image n\'est pas bon';
                                        	} 

                                        $jpgimg = imagecreatefromjpeg($_FILES['uploadFile']['tmp_name']);

                                        $tjpgimg = getimagesize($_FILES['uploadFile']['tmp_name']);

                                        $newlarg = 350; 
 
                                        $newhaut = ( ($tjpgimg[1] * (($newlarg)/$tjpgimg[0])) );
 
                                        $newjpgimg = imagecreatetruecolor($newlarg , $newhaut) or die ("Erreur");
 
                                        imagecopyresampled($newjpgimg , $jpgimg  , 0,0, 0,0, $newlarg, $newhaut, $tjpgimg[0],$tjpgimg[1]);
                                              imagedestroy($jpgimg);
                                             
                                               $filerename = 'fichier_du_'.date('YmdHis').'.'.$filesext;
                                              
                                              imagejpeg($newjpgimg , 'uploads_img/'.$filerename, 100);
                                
								
					if ($filesext == 'png')
                            		{
                              
							 $pngimg = getimagesize($_FILES['uploadFile']['tmp_name']);

							  
                              	if($pngimg['mime'] == $mimeext[$filesext] || $pngimg['mime'] == $mimeextie[$filesext])
				{
						 }
                                        	else
                                        	{
                                                echo 'Le type MIME de l\'image n\'est pas bon';
                                        	}

                                        $pngimg = imagecreatefrompng($_FILES['uploadFile']['tmp_name']);
                                        $tpngimg = getimagesize($_FILES['uploadFile']['tmp_name']);
                                        $newlarg = 350;
 
                                        $newhaut = ( ($tpngimg[1] * (($newlarg)/$tpngimg[0])) );
 
                                        $newpngimg = imagecreatetruecolor($newlarg , $newhaut) or die ("Erreur");
 
                                        imagecopyresampled($newpngimg , $pngimg  , 0,0, 0,0, $newlarg, $newhaut, $tpngimg[0],$tpngimg[1]);
                                        imagedestroy($pngimg);
                                             
                                               $filerename = 'fichier_du_'.date('YmdHis').'.'.$filesext;
                                              
                                              
                                              imagepng($newpngimg, 'uploads_img/'.$filerename,0 );
             
 						}
                                		else
                                		{
                                    	//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                                		}
                                             
                                        	
                               		}
                                	else
                                	{
                                    //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                                	}
                        	}
                        	else
                        	{
                                echo 'L\'extension choisie pour l\'image est incorrecte';
                        	}
                	}
                	else
                	{
                       echo 'L\'image est trop lourde';
                	}
				
	
		}
		else
		{
		 echo 'Erreur lors de l\'upload image';
		}	
		
				
        }
	else
	{
	echo 'Prêt!';
	}	



$destpath = '/uploads_img/';

?>
	
JS:

Code : Tout sélectionner

<script type="text/javascript"> <!-- window.top.window.uploadEnd("<?php echo $error; ?>", "<?php echo $destpath. $filerename; ?>"); //--> </script>