[AIDE]Fonction PHP creation thumbnail automatique, grr
Posté : 11 janv. 2009, 13:52
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) !!!
PS: J'ai voulu me présenter mais je n'ai pas trouver de topic dédier la présentation, j'ai aussi lu les règles d'utilisation du fofo et j'ai aussi utiliser la fonction recherche, certes mon problème se divise en deux partie mais rectifier moi si je me trompe les deux problèmes sont liés
Pouvez vous m'aider s'il vous plait ?
Je vous joint le code complet de ma fonction
Petit up !!! de l'aide svp
j'ai donc inclu le ficheir javascript jQueryembedquicktime.js pour avoir les extensions .mov, wmv... et j'ai suivi les instructions du site pour le mettre comme ceci
mais je crois qu'il est en conflit avec le fichier qui gere ma lightbox (et qui est en fait un lightbox clone)
prettyPhoto.js
MAJ :::
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 !!!
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) !!!
PS: J'ai voulu me présenter mais je n'ai pas trouver de topic dédier la présentation, j'ai aussi lu les règles d'utilisation du fofo et j'ai aussi utiliser la fonction recherche, certes mon problème se divise en deux partie mais rectifier moi si je me trompe les deux problèmes sont liés
Pouvez vous m'aider s'il vous plait ?
Je vous joint le code complet de ma fonction
Code : Tout sélectionner
<?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);
}
?>
Petit up !!! de l'aide svp
j'ai donc inclu le ficheir javascript jQueryembedquicktime.js pour avoir les extensions .mov, wmv... et j'ai suivi les instructions du site pour le mettre comme ceci
Code : Tout sélectionner
<script type="text/javascript"
src="http://example.com/jquery-1.2.3.pack.js"></script>
<script type="text/javascript"
src="http://example.com/jquery.embedquicktime.js"></script>
<script type="text/javascript">
jQuery.noConflict();
jQuery(document).ready(function() {
jQuery.embedquicktime({
jquery: 'http://example.com/jquery-1.2.3.pack.js',
plugin: 'http://example.com/jquery.embedquicktime.js'
});
});
</script>
mais je crois qu'il est en conflit avec le fichier qui gere ma lightbox (et qui est en fait un lightbox clone)
prettyPhoto.js
MAJ :::
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 !!!