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

Langage PHP Discussion :

Fonction PHP creation thumbnail automatique


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 21
    Points : 8
    Points
    8
    Par défaut Fonction PHP creation thumbnail automatique
    Bonjour je suis débutant en php et pour commencer je me suis attaquer -(avec un bouquin) - à la création d'une galerie dynamique basé sur la fameuses LightBox de jQuery avec une interface d'administration pour faciliter la gestion du contenu de ma galerie (effacer, ajouter, descriptions..) ,cette galerie nécessite une base de donnée mySql et donc une installation préalable !!! jusqu'à la j'espère que vous me comprenez (c'est pas trop complexe), en surfant sur les différents site proposant des LightBox perso je suis par hasard tombé sur un script ou plutôt sur une fonction permettant de créer automatiquement un thumbnails à partir de l'image que j'importe de mon PC dans ma galerie, et bonne nouvelle ce script fonctionne nickel chrome, mais , ehh oui car il y a évidemment un mais , sinon je ne serais pas là !!!

    je souhaiterais transformer quelque peu cette fonction pour me permettre de pouvoir choisir moi-même le thumbnails associé à l'image que j'importe. Mais étant débutant je ne sais pas par ou commencer, dans l'interface d'administration j'ai donc déjà créer un "form" de type "file" associé à une id permettant de reconnaitre qu'il s'agit du thumbnail et non de l'image (en taille réelle) !!! J'espère avoir été aussi clair que possible.


    Donc si une âme charitable passe sur le fofo , pouvez vous me venir en aide ?


    Ahh j'oubliais j'ai aussi un autre petit problème, la lightBox que j'utilise pour cette galerie me permet uniquement de gérer les fichiers image .gif, .jpg, et .png et je voudrais aussi pouvoir mettre des fichiers .mov, wmv, .mp3... etc et j'ai donc été fouiner sur le sourceforge de jQuery afin de trouver la solution à ce problème et j'ai trouver un petit plug à rajouter à l'aide d'un simple petit javascript pour pouvoir gérer ce type de fichiers dans ma galerie, mais je souhaiterais intégrer à ma fonction ce type de fichiers (d'extensions de fichiers plutôt) !!!


    Pouvez vous m'aider s'il vous plait ?


    Je vous joint le code complet de 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
     
    <?php
    require_once '../config.inc.php';
     
    $action = isset($_GET['view']) ? $_GET['view'] : '';
     
    switch ($action) {
     
    	case 'add' :
    		add_image();
    		break;
    	case 'delete' :
    		delete_image();
    		break;
    	default :
    	    // if action is not defined or unknown
    		header('Location: index.php?view=main');
    }
    function add_image(){
    $name = $_POST['name'];
    $alt = $_POST['alt'];
    $images = uploadImage('image', '../images/gallery/');
    $mainImage = $images['image'];
    $thumbnail = $images['thumbnail'];
    $sql = script_db_query("INSERT INTO gallery (pict_name, pict_alt, pict_path, pict_thumb) values ('$name','$alt','$mainImage','$thumbnail')");
    if($sql){
    header('Location: index.php');
    } else {
    echo 'Error: could not make the querry';
    }
    }
    function delete_image(){
    $id = $_GET['id'];
     
    	// get the image name and thumbnail
    	$sql = "SELECT pict_path, pict_thumb 
    	        FROM gallery
    			WHERE pict_id = $id";
     
    	$result = script_db_query($sql);
    	$row    = script_db_fetch_array($result);
     
    	// remove the image and thumbnail
    	if ($row['pict_path']) {
    		unlink(SRV_ROOT . 'images/gallery/' . $row['pict_path']);
    		unlink(SRV_ROOT . 'images/gallery/' . $row['pict_thumb']);
    	}
     
    	// remove the image from database;
    	$sql = "DELETE FROM gallery 
    	        WHERE pict_id = $id";
    	script_db_query($sql);
     
    	header('Location: index.php');
    }
    /*
    	Create a thumbnail of $srcFile and save it to $destFile.
    	The thumbnail will be $width pixels.
    */
    function createThumbnail($srcFile, $destFile, $width, $quality = 75)
    {
    	$thumbnail = '';
     
    	if (file_exists($srcFile)  && isset($destFile))
    	{
    		$size        = getimagesize($srcFile);
    		$w           = number_format($width, 0, ',', '');
    		$h           = number_format(($size[1] / $size[0]) * $width, 0, ',', '');
     
    		$thumbnail =  copyImage($srcFile, $destFile, $w, $h, $quality);
    	}
     
    	// return the thumbnail file name on sucess or blank on fail
    	return basename($thumbnail);
    }
     
    /*
    	Copy an image to a destination file. The destination
    	image size will be $w X $h pixels
    */
    function copyImage($srcFile, $destFile, $w, $h, $quality = 75)
    {
        $tmpSrc     = pathinfo(strtolower($srcFile));
        $tmpDest    = pathinfo(strtolower($destFile));
        $size       = getimagesize($srcFile);
     
        if ($tmpDest['extension'] == "gif" || $tmpDest['extension'] == "jpg")
        {
           $destFile  = substr_replace($destFile, 'jpg', -3);
           $dest      = imagecreatetruecolor($w, $h);
           imageantialias($dest, TRUE);
        } elseif ($tmpDest['extension'] == "png") {
           $dest = imagecreatetruecolor($w, $h);
           imageantialias($dest, TRUE);
        } else {
          return false;
        }
     
        switch($size[2])
        {
           case 1:       //GIF
               $src = imagecreatefromgif($srcFile);
               break;
           case 2:       //JPEG
               $src = imagecreatefromjpeg($srcFile);
               break;
           case 3:       //PNG
               $src = imagecreatefrompng($srcFile);
               break;
           default:
               return false;
               break;
        }
     
        imagecopyresampled($dest, $src, 0, 0, 0, 0, $w, $h, $size[0], $size[1]);
     
        switch($size[2])
        {
           case 1:
           case 2:
               imagejpeg($dest,$destFile, $quality);
               break;
           case 3:
               imagepng($dest,$destFile);
        }
        return $destFile;
     
    }
    function uploadimage($inputName, $uploadDir)
    {
    	$image     = $_FILES[$inputName];
    	$imagePath = '';
    	$thumbnailPath = '';
     
    	// if a file is given
    	if (trim($image['tmp_name']) != '') {
    		$ext = substr(strrchr($image['name'], "."), 1); //$extensions[$image['type']];
     
    		// generate a random new file name to avoid name conflict
    		$imagePath = md5(rand() * time()) . ".$ext";
     
    		list($width, $height, $type, $attr) = getimagesize($image['tmp_name']); 
     
    		// make sure the image width does not exceed the
    		// maximum allowed width
    		if (LIMIT_WIDTH && $width > MAX_IMAGE_WIDTH) {
    			$result    = createThumbnail($image['tmp_name'], $uploadDir . $imagePath, MAX_IMAGE_WIDTH);
    			$imagePath = $result;
    		} else {
    			$result = move_uploaded_file($image['tmp_name'], $uploadDir . $imagePath);
    		}	
     
    		if ($result) {
    			// create thumbnail
    			$thumbnailPath =  md5(rand() * time()) . ".$ext";
    			$result = createThumbnail($uploadDir . $imagePath, $uploadDir . $thumbnailPath, THUMBNAIL_WIDTH);
    			// create thumbnail failed, delete the image
    			if (!$result) {
    				unlink($uploadDir . $imagePath);
    				$imagePath = $thumbnailPath = '';
    			} else {
    				$thumbnailPath = $result;
    			}	
    		} else {
    			// the product cannot be upload / resized
    			$imagePath = $thumbnailPath = '';
    		}
     
    	}
     
     
    	return array('image' => $imagePath, 'thumbnail' => $thumbnailPath);
    }
    ?>

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    Bon je me suis rabattu sur le plug in javascript Shadowbox qui gére la plupart des types de fichiers que je souhaite, donc il me reste plus qu'as recoder tout mon php, mais un peu ne serais pas de refus !!!

    Jusqu'a présent j'en suis :

    - J'ai créer l'interface d'administration (avec le design, css...)

    - j'ai créer toute la structure de la galerie php.

    - J'ai créer le login pour accéder à l'interface (je pense qu'elle est plus ou moins secure)

    - le paramétrage de l'installation est quasiment fini (reste évidement ces quelques fonctions ci dessous a faire) , j'ai créer des tables dans la bdd mysql pour
    - media_id
    - media_thumb
    -media_path
    -media_name
    -media_alt

    il faudrait je pense créer aussi

    - media_desc (pour la description)
    - media_info (pour le reste)

    Qu'en pensez vous ???


    Maintenant il me faudrait créer un truc ou trouver un exemple de code pour une genre d'interface avec un "form file" pour importer un vidéo venant de mon PC, un ""form file" pour importer le thumbnails étant associé à ma videos, un "form text" pour le titre de la vidéo, un "form text" pour sa description et voila !!!!

    Donc je repart dans mon code !!!

    PS: j'oubliais, biensur ma galerie vidéo, image seras une fois terminer mis en OpenSource !!!

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/03/2008, 12h46
  2. Appel fonction php dans code javascript
    Par licorne dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/03/2008, 10h55
  3. Réponses: 7
    Dernier message: 29/05/2007, 15h11
  4. La fonction PHP sleep() pompe t-elle en ressource UC ?
    Par Thierry8 dans le forum Langage
    Réponses: 3
    Dernier message: 20/08/2005, 19h37
  5. Une fonction de creation de fichier?
    Par zuzur dans le forum C++
    Réponses: 3
    Dernier message: 07/11/2004, 13h10

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