Imagecreatefromjpeg

faustocoppi Messages postés 4 Date d'inscription lundi 25 septembre 2006 Statut Membre Dernière intervention 17 mars 2007 - 11 mars 2007 à 19:09
faustocoppi Messages postés 4 Date d'inscription lundi 25 septembre 2006 Statut Membre Dernière intervention 17 mars 2007 - 17 mars 2007 à 17:32
bonjour,

je souhaiterais créer une miniature depuis une jpg uploadée via un formulaire
et je n'arrive pas à la créer

<?php
//--------------------------------------------------------------------------------------------
//test photo
//--------------------------------------------------------------------------------------------
if (isset($_FILES['photo']))
//--------------------------------------------------------------------------------------------
{

$photo= $_FILES['photo']['name'];
$size=$_FILES['photo']['size'];
$tmp=$_FILES['photo']['tmp_name'];
$type=$_FILES['photo']['type'];
//on récup la taille de l'image
list($width,$height)=getimagesize($tmp);
if (is_uploaded_file($tmp))
/////////////////////////////////////////////////////////////////////////////////////////////
{
//vérif du type de l'image de son poids et de sa taille (jpg <=500Ko et <=800 * 600 px)
if ($type="image/jpg" OR $type="image/gif" && $size<=500000 && $width<=800 && $height<=600)
//_________________________________________________________________________________________
{
$photo = preg_replace ("` `i","",$photo);
if (file_exists(''.$photo))
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
{
$nom_final=preg_replace("`.jpg`is",date("U").".jpg",$photo);
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
}
else
//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
{
$nom_final=$photo;
//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
}

// on déplace l'image ds le répertoire final
move_uploaded_file($tmp,'jpg/'.$nom_final);
echo "L'image a été uploadée avec succès";
//_________________________________________________________________________________________
}
else
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
{
echo "

";
echo "Erreur:";
echo "
";
echo "le fichier doit être en format jpg, 800 * 600px max et peser moins de 500Ko!";
echo "

";
echo "back";
exit();
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
}
/////////////////////////////////////////////////////////////////////////////////////////////
}
$photo ="";
//--------------------------------------------------------------------------------------------
// création vignettes
$imgname = "jpg/$nom_final";
$vignettes = @imagecreatefromjpeg($imgname); /* Tentative d'ouverture */
if (!$vignettes) { /* Vérification */
$vignettes = imagecreatetruecolor(150, 30); /* Création d'une image blanche */
$bgc = imagecolorallocate($vignettes, 255, 255, 255);
$tc = imagecolorallocate($vignettes, 0, 0, 0);
imagefilledrectangle($vignettes, 0, 0, 150, 30, $bgc);
// Affichage d'un message d'erreur
imagestring($vignettes, 1, 5, 5, "Erreur de chargement de l'image $imgname", $tc);
}
echo $vignettes;
exit;
//--------------------------------------------------------------------------------------------

}

?>

sur mon" echo vignettes" à la fin je n'arrive pas à recupérer le nom de la vignette
j'ai comme erreur : Resource#id8
bref, si vous avez une idée

Merci

F

4 réponses

J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
11 mars 2007 à 19:50
Salut,

Il y a un exemple pret à l'emploi ici, je l'ai toujours utilisé simplement en le transformant en fonction

Note : tu n'es pas obligé d'utiliser le format JPG... PNG et GIF passe aussi très bien avec la librairie GD...

A+

<?php
// The file
$filename = 'test.jpg';

// Set a maximum height and width
$width = 200;
$height = 200;

// Content type
header('Content-type: image/jpeg');

// Get new dimensions
list($width_orig, $height_orig) = getimagesize($filename);

$ratio_orig = $width_orig/$height_orig;


if ($width/$height > $ratio_orig) {

   $width = $height*$ratio_orig;

} else {

   $height = $width/$ratio_orig;

}

// Resample
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

// Output
imagejpeg($image_p, null, 100);
?>
0
faustocoppi Messages postés 4 Date d'inscription lundi 25 septembre 2006 Statut Membre Dernière intervention 17 mars 2007
13 mars 2007 à 10:50
Error convertoring HTML to XHTML: System.ArgumentException: La chaîne vide '' ne constitue pas un nom valide.
à System.Xml.XmlTextWriter.ValidateName(String name, Boolean NCName)
à System.Xml.XmlTextWriter.InternalWriteProcessingInstruction(String name, String text)
à System.Xml.XmlTextWriter.WriteProcessingInstruction(String name, String text)
à System.Xml.XmlWriter.WriteNode(XmlReader reader, Boolean defattr)
à FreeTextBoxControls.Support.Formatter.HtmlToXhtml(String input)
0
faustocoppi Messages postés 4 Date d'inscription lundi 25 septembre 2006 Statut Membre Dernière intervention 17 mars 2007
13 mars 2007 à 10:53
hello,
Merci pour la réponse,
en fait, je suis parti sur un autre fichier
mon but est d'uploader deux photos sur le serveur (dans deux dossiers)
- la photo "taille normale"
- la miniature créée à partir de la 1ère
(pour ce qui est de créer la miniature et de l'uploader, ça fonctionne, mais je n'arrive pas à uploader dans le même temps la photo "taille normale"
dans un autre dossier)

<?
//Cookies du pseudo
//*****************

$pseudo =  $_POST['pseudo'];

//Enregistre le pseudo actuel
if(($pseudo != "")&&($pseudo != "Anonyme"))setcookie ("cookie_rep", $pseudo, time()+3600*24*365); //valable 1 année

//Lecture du pseudo
$cook_rep= $HTTP_COOKIE_VARS["cookie_rep"];
if(!isset($cook_rep))$cook_rep = "Anonyme";
if($pseudo "")$pseudo $cook_rep;
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="description" content="Upload de photo avec redimentionnement" />
<title>upload</title>
</head>
 




<?php 
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// création vignettes depuis photo
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

//---------------------------- 
//  DEFINITION DES VARIABLES  
//---------------------------- 

 
$test_local = 0;                                                                           

$extension = 'image/jpeg';                    
$quality    = 90;                                         // Qualité de la compression JPEG
$kb_max     = 70000;                                      // Valeur max en octets de l'image finale
$max_size   = 1000000;                                    // Taille max en octets du fichier à uploader pour traitement 
$largeurDestination = 150;                                // Largeur max de l'image finale en pixel
$nom_rep    = "nom_du_dossier_miniatures";
$site       = "http://".$_SERVER["HTTP_HOST"]."/nom_du_dossier/"; // Adresse du dossier où est installé le script (fin avec /)

//--------------------------------------------- 
//  DEFINITION DES VARIABLES LIEES AUX FICHIERS 
//--------------------------------------------- 

$nom_file     = $_FILES['fichier']['name']; 
$taille       = $_FILES['fichier']['size']; 
$tmp          = $_FILES['fichier']['tmp_name'];
$ext_img      = $_FILES['fichier']['type'];
$lien_dossier = $nom_rep;

$verif_exist  = $nom_rep;
$verif_exist .= "/";
$verif_exist .= $nom_file;
       
//---------------------- 
//  SCRIPT D'UPLOAD 
//----------------------                     

//Vérifie l'existance du dossier de réception
//*******************************************
if(!file_exists($lien_dossier))
  {
   //Crée le répertoire de classement des photos s'il n'existe pas
   if(!mkdir($lien_dossier,0755))
     {
        echo "Impossible de créer le répertoire : ",$lien_dossier," --> upload interrompu!!!";
        exit;
     }        
  }  
                
//Enlever les accents
//*******************
function enlever_accents($dest_fichier){
$dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ/', 
                                     'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy/');
//remplacer les caracteres autres que lettres, chiffres et point par _
$dest_fichier = preg_replace('/([^.a-z/0-9]+)/i', '_', $dest_fichier);
return $dest_fichier;
}

$nom_rep     = enlever_accents($nom_rep);
$pseudo      = enlever_accents($pseudo);
$verif_exist = enlever_accents($verif_exist);
$nom_file    = enlever_accents($nom_file);

//Début de la procédure d'upload
//******************************       
if(!empty($_POST['posted'])) { 
    // On vérifie si le champ est rempli 
    if(!empty($nom_file) && (!empty($pseudo))) { 
      //On vérifie que le nom du fichier n'existe pas
      if(!file_exists($verif_exist)) { 
        // On vérifie l'extension du fichier 
        if($ext_img == $extension) { 
           // On récupère les dimensions du fichier 
           $infos_img = getimagesize($tmp); 
            // On vérifie la taille de l'image 
            if($taille <= $max_size) { 
               //upload du fichier
   
               if(move_uploaded_file($tmp,$nom_rep."/".$nom_file)) { 
                   echo ' vignette uploadée avec succès ! 
'; 
                 
                    //calcul et redimension
                    //*********************
                    $fichierSource   = $nom_rep;
                    $fichierSource .=  "/";
                    $fichierSource .= $nom_file;  
                    $fichierSource  = $fichierSource;
                    //hauteur / largeur 
                    $rapport = $infos_img[1] / $infos_img[0];
                    //Dimension de sortie
                    $hauteurDestination = $largeurDestination * $rapport;
                     
                    //Création de l'image
                    //*******************
                    $source = imagecreatefromjpeg($fichierSource); 
                     
                    $largeurSource = imagesx($source); 
                    $hauteurSource = imagesy($source);
                                       
                    if($largeurSource > $largeurDestination){
                       $im = ImageCreateTrueColor ($largeurDestination, $hauteurDestination)      
                            or die ("Erreur lors de la création de l'image");  
                    }
                    else{  
                       $im = ImageCreateTrueColor ($infos_img[0], $infos_img[1])
                            or die ("Erreur lors de la création de l'image");
                       $largeurDestination = $infos_img[0];
                       $hauteurDestination = $infos_img[1];     
                    }
                       
                    //Redimentionnement
                    //***************** 
                    ImageCopyResampled($im, $source, 0, 0, 0, 0, $largeurDestination, $hauteurDestination, $largeurSource, $hauteurSource);                                                                                    
                    
                    //Création du fichier de sortie
                    //*****************************
                    $fh=fopen($fichierSource,'w');
                    fclose($fh);
                    ImageJpeg ($im,$fichierSource,$quality);
                    $size_file = filesize($fichierSource);
                    
                    //Test de la taille en kb de l'image définitive
                    //*********************************************
                    $size_file = filesize($fichierSource);
                    $iteration = 0;
                    while($size_file > $kb_max){
                        if($quality > 0)$quality -= 5;
                        else {$quality = "Erreur!!!"; break;}
                       unlink($fichierSource);
                       $fh=fopen($fichierSource,'w');
                       fclose($fh);
                       ImageJpeg ($im,$fichierSource,$quality);
                       $size_file = filesize($fichierSource);
                       $iteration++;
                    }
                                       
                    $lien_image = $site.$nom_rep."/".$nom_file;                  
                    //echo "L'image ci-dessous a été redimentionnée et chargée sur le serveur";
                    //echo "Lien de l'image : ".$lien_image."

";
                    echo "
";					
}				
                       
                } 
else { 
                    // Sinon on affiche une erreur système 
                    echo 'ECHEC DE L'ENVOI

Problème lors de l'upload !

 Erreur num : ', $_FILES['fichier']['error'], ' 

'; 
                }
            } else { 
                // Sinon on affiche une erreur pour les dimensions et taille de l'image 
                echo "La taille du fichier dépasse la taille maximale autorisée de $max_size octets!

"; 
            }    
        } else { 
            // Sinon on affiche une erreur pour l'extension 
            echo 'ECHEC DE L'ENVOI

Votre image ne comporte pas l'extension .jpg !

'; 
        }
      } else {
             //Sinon on demande de renommer
             echo 'ECHEC DE L'ENVOI

Une image avec le même nom existe déjà! Renommer la photo et réessayer, Merci.

'; 
       }         
    } else { 
        // Sinon on affiche une erreur pour le champ vide 
        echo 'ECHEC DE L'ENVOI

Aucune photo sélectionnée ou aucun pseudo entré!

'; 
    }
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// FIN création vignettes depuis photo
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

?>

 
<form enctype ="multipart/form-data" action= "<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> 
  Envoyer le fichier : 


  
 Votre pseudo : " size ="20" >

 

         Sélectionner la photo : 

 
  
</form> 
       
 

</html>


si vous avez une idée
Merci à vous

f
0
faustocoppi Messages postés 4 Date d'inscription lundi 25 septembre 2006 Statut Membre Dernière intervention 17 mars 2007
17 mars 2007 à 17:32
salut,
il y a un exemple ici :
http://www.lephpfacile.com/howto/index.php

merci
f
0
Rejoignez-nous