Accueil > Forum > > > > Galerie photos: Miniature + rognage
Galerie photos: Miniature + rognage
dimanche 13 juin 2010 à 17:02:30 |
Galerie photos: Miniature + rognage

Kronikerz
|
Bonjour,
Je suis à la recherche de 2 scripts:
le premier permettant de miniaturiser une image, tout en gardant les proportions.
Le second dans le but de découper les bords de l'image miniaturisée afin d'en obtenir une vignette.
Vous l'aurez compris, dans le but de créer une galerie photos.
Si une personne à déjà travaillé sur ce topic et que cela ne la dérange pas de partager son code, afin que j'en comprenne le fonctionnement, je lui en serai reconnaissant.
Cordialement.
|
|
lundi 14 juin 2010 à 11:23:11 |
Re : Galerie photos: Miniature + rognage

devil_may_cry
|
Réponse acceptée !
salut voici deux fonction la premiere redimensionne et l'autre rogne l'image attention dans les deux cas je redimensionne sans se soucier si la largeur et la hauteur de l'image source source sont plus petit que ceux specifier a l'apple de la fonction mais je crois que ca sera facile pour toi de l'integrer au besoin
Code PHP :
<?php
function redimImage($source,$destination,$Wmax, $Hmax,$ext) {
// recuperation des dimensions de l image Src
$size = getimagesize($source);
$W = $size[0]; // largeur
$H = $size[1]; // hauteur
// Calcul du ratio
$ratiox = $W / $Wmax; // ratio en largeur
$ratioy = $H / $Hmax; // ratio en hauteur
$ratio = max($ratiox,$ratioy); // le plus grand
$W = $W/$ratio;
$H = $H/$ratio;
//Creation de la ressource source suivant l'extension
switch($ext) {
case 'jpg':
case 'jpeg':
$Src = imagecreatefromjpeg($source);
break;
case 'png':
$Src = imagecreatefrompng($source);
break;
}
// Creation de la ressource destination suivant l'extension
switch($ext) {
case 'jpg':
case 'jpeg':
$Dest = imagecreatetruecolor($W,$H);
break;
case 'png':
$Dest = imagecreatetruecolor($W,$H);
// fond transparent (pour les png avec transparence)
imagesavealpha($Dest, true);
$trans_color = imagecolorallocatealpha($Dest, 0, 0, 0, 127);
imagefill($Dest, 0, 0, $trans_color);
break;
}
// REDIMENSIONNEMENT+COPIE
imagecopyresampled($Dest, $Src, 0, 0, 0, 0, $W, $H, $size[0], $size[1]);
// ENREGISTREMENT
switch ($ext) {
case 'jpg':
case 'jpeg':
imagejpeg ($Dest,$destination);
break;
case 'png':
imagepng ($Dest,$destination);
break;
}
// liberation des ressources-image
imagedestroy ($Src);
imagedestroy ($Dest);
// si le fichier a bien ete cree
if( file_exists($destination)) {
return true;
} else {
return false;
}
}
function cropImage($source,$destination,$Wmax, $Hmax,$ext) {
// recuperation des dimensions de l image Src
$size = getimagesize($source);
$W = $size[0]; // largeur
$H = $size[1]; // hauteur
//Creation de la ressource source suivant l'extension
switch($ext) {
case 'jpg':
case 'jpeg':
$Src = imagecreatefromjpeg($source);
break;
case 'png':
$Src = imagecreatefrompng($source);
break;
}
// Creation de la ressource destination suivant l'extension
switch($ext) {
case 'jpg':
case 'jpeg':
$Dest = imagecreatetruecolor($W,$H);
break;
case 'png':
$Dest = imagecreatetruecolor($W,$H);
// fond transparent (pour les png avec transparence)
imagesavealpha($Dest, true);
$trans_color = imagecolorallocatealpha($Dest, 0, 0, 0, 127);
imagefill($Dest, 0, 0, $trans_color);
break;
}
// REDIMENSIONNEMENT+COPIE
imagecopyresampled($Dest, $Src, 0, 0, 0, 0, $W, $H, $size[0], $size[1]);
// ENREGISTREMENT
switch ($ext) {
case 'jpg':
case 'jpeg':
imagejpeg ($Dest,$destination);
break;
case 'png':
imagepng ($Dest,$destination);
break;
}
// liberation des ressources-image
imagedestroy ($Src);
imagedestroy ($Dest);
// si le fichier a bien ete cree
if( file_exists($destination)) {
return true;
} else {
return false;
}
}
?>
CORDIALEMENT
|
|
lundi 14 juin 2010 à 11:33:13 |
Re : Galerie photos: Miniature + rognage

devil_may_cry
|
ah j'avais oublier les deux fonction return true en cas de succes ou false dans le cas contraire
|
|
lundi 14 juin 2010 à 13:50:29 |
Re : Galerie photos: Miniature + rognage

Kronikerz
|
Merci infiniment Devil, avec cela, ça va aller nickel
|
|
vendredi 18 juin 2010 à 18:30:34 |
Re : Galerie photos: Miniature + rognage

Kronikerz
|
Devil, j'ai utilisé ton script pour créer une miniature, mais aucune image ne se crée dans le dossier de destination.
Lors de l'exécution du script, le symbole représentant une image manquante apparait dans ma fenêtre de mon navigateur.
J'ai vérifié que mon serveur local (wamp5) soit configuré pour utiliser la bibliothèque GD et cela semble être le cas, ainsi que les liens pointant sur mes photos et dossier. De plus j'ai lu que l'OS était important et je travail sous WIN7, donc je ne comprends pas ce que je dois faire de plus.
J'ai encore ajouter le code suivant avant l'appelle de ta fonction:
header('Content-Type: image/jpg');
Peux-tu, stp, m'aiguiller sur la procédure d'utilisation de ton script. Merci d'avance.
|
|
samedi 19 juin 2010 à 20:47:06 |
Re : Galerie photos: Miniature + rognage

devil_may_cry
|
Réponse acceptée !
salut pour utiliser ces deux fonction t'a pas besoin de faire un header
il suffit de faire appele a celle-ci
//REDIMEN
Code PHP :
/**
* @params String nom_imageSource,String nom_imageDestination,int largeur_final,int hauteur,final
* @return Bool
*/
if(redimImage('avatar.jpg','avatar2.jpg','150','80','jpg')) {
echo "image redimensionner";
} else {
echo "image non redimentionner";
}
pour la deuxieme fonction j'avais fait une erreur en copiant le code je rectifie donc
Code PHP :
function cropImage($source,$destination,$W_f, $H_f,$ext) {
// recuperation des dimensions de l image Src
$size = getimagesize($source);
$W_s = $size[0]; // largeur
$H_s = $size[1]; // hauteur
// crop aux dimensions indiquees
if ($W_f != 0 && $H_f != 0) {
$W = $W_f;
$H = $H_f;
}
// meme largeur que la source)
if ($W_f == 0 && $H_f != 0) {
$H = $H_f;
$W = $W_s;
}
// meme hauteur que la source
if ($W_f != 0 && $H_f == 0) {
$W = $W_f;
$H = $H_s;
}
// crop "carre"
if ($W_f == 0 && $H_f== 0) {
if ($W_s >= $H_s) {
$W = $H_s;
$H = $H_s;
} else {
$W = $W_s;
$H = $W_s;
}
}
//Creation de la ressource source suivant l'extension
switch($ext) {
case 'jpg':
case 'jpeg':
$Src = imagecreatefromjpeg($source);
break;
case 'png':
$Src = imagecreatefrompng($source);
break;
}
// Creation de la ressource destination suivant l'extension
switch($ext) {
case 'jpg':
case 'jpeg':
$Dest = imagecreatetruecolor($W,$H);
// fond blanc
$blanc = imagecolorallocate ($Dest, 255, 255, 255);
imagefill ($Dest, 0, 0, $blanc);
break;
case 'png':
$Dest = imagecreatetruecolor($W,$H);
// fond transparent (pour les png avec transparence)
imagesavealpha($Dest, true);
$trans_color = imagecolorallocatealpha($Dest, 0, 0, 0, 127);
imagefill($Dest, 0, 0, $trans_color);
break;
}
// CENTRAGE en largeur
if ($W_f == 0) {
if ($H_f == 0 && $W_s < $H_s) {
$X_s = 0;
$X_d = 0;
$W_c = $W_s;
} else {
$X_s = 0;
$X_d = ($W - $W_s) /2;
$W_c = $W_s;
}
} else {
if ($W_s > $W) {
$X_s = ($W_s - $W) /2;
$X_d = 0;
$W_c = $W;
} else {
$X_s = 0;
$X_d = ($W - $W_s) /2;
$W_c = $W_s;
}
}
// CENTRAGE en hauteur
if ($H_f == 0) {
if ($W_f == 0 && $H_s < $W_s) {
$Y_s = 0;
$Y_d = 0;
$H_c = $H_s;
} else {
$Y_s = 0;
$Y_d = ($H - $H_s) /2;
$H_c= $H_s;
}
} else {
if ($H_s > $H) {
$Y_s = ($H_s - $H) /2;
$Y_d = 0;
$H_c = $H;
} else {
$Y_s = 0;
$Y_d = ($H - $H_s) /2;
$H_c = $H_s;
}
}
//Copie
imagecopyresampled($Dest, $Src, $X_d, $Y_d, $X_s, $Y_s, $W_c, $H_c, $W_c, $H_c);
// ENREGISTREMENT
switch ($ext) {
case 'jpg':
case 'jpeg':
imagejpeg ($Dest,$destination);
break;
case 'png':
imagepng ($Dest,$destination);
break;
}
// liberation des ressources-image
imagedestroy ($Src);
imagedestroy ($Dest);
// si le fichier a bien ete cree
if( file_exists($destination)) {
return true;
} else {
return false;
}
}
pour cette fonction sont utilisation est le même que la premiere sauf que ici si tu veut conserver une proportion remplace la par zero
Code PHP :
/**
* @params String nom_imageSource,String nom_imageDestination,int largeur_final,int hauteur,final
* @return Bool
*/
//ici on conserve la hauteur
if(cropImage('avatar.jpg','avatar2.jpg','150','0','jpg')) {
echo "image redimensionner";
} else {
echo "image non redimentionner";
}
|
|
samedi 19 juin 2010 à 23:20:42 |
Re : Galerie photos: Miniature + rognage

Kronikerz
|
Merci mille fois, je teste cela et je poste une réponse pour enrichir le topique. 
|
|
dimanche 20 juin 2010 à 00:04:31 |
Re : Galerie photos: Miniature + rognage

Kronikerz
|
Alors voilà les nouvelles informations:
header('Content-Type: image/jpg'); est requis sinon je ne peux pas utiliser ta fonction de redimensionnement (j'ai pas encore testé celle pour rogner).
Ta fonction, je l'utilise également dans un if() mais le message à l'intérieur de ce dernier ne s'affiche pas.
Je ne suis pas un débutant en php, mais pourtant je n'arrive pas à utiliser ton script malgré que je le comprend.
Je ne me décourage pas pour autant, et je vais lire, ligne par ligne, les informations de php.net
|
|
dimanche 20 juin 2010 à 00:41:07 |
Re : Galerie photos: Miniature + rognage

Kronikerz
|
Ca avance gentillement, je t'ai parlé d'un problème avec le navigateur qui affichait un symbole d'un lien cassé pointant sur une image, ce que je ne t'ai pas dit c'est que j'utilise habituellement Chrome. J'ai alors utilisé IE7 pour voir ce que lui me disait et justement il m'indiquait que le problème venait de la fonction imagecreatefromjpeg().
Je suis allé sur php.net et il montrait une façon de procéder avec un @ devant la fonction, sans mentionner à quoi ce dernier pouvait bien servir. Je l'ai testé ainsi et maintenant, le symbole du lien cassé a disparu de Chrome pour apparaître sous IE; et toujours pas de nouvelle image dans le dossier de destination.
Comme je m'y connais absolument en rien en ce qui concerne les flux de sortie permettant de copier, puis de modeler une image avec du php, je fais appelle une fois de plus à tes connaissances, si tu as une idée au problème que je rencontre.
Merci d'avance. (encore) 
|
|
dimanche 20 juin 2010 à 01:06:07 |
Re : Galerie photos: Miniature + rognage

devil_may_cry
|
header('Content-Type: image/jpg'); est requis sinon je ne peux pas utiliser ta fonction de redimensionnement
la fonction n'affiche pas l'image directement dans le navigateur donc le header est normalement unitule ici
Je suis allé sur php.net et il montrait une façon de procéder avec un @ devant la fonction, sans mentionner à quoi ce dernier pouvait bien servir.
je ne te conseille pas d'utiliser ca quand tu est en developpement car ca n'evite pas une erreur mais elle la cache donc meme si il y'a une function qui renvoie une erreur comme par exemple mysql_connect ou autre et que tu place le signe @ devant tu n'auras pas de message d'erreur
en plus j'ai oublier de te dire que ce code j'ai l'ai fait avec la version 2 de gd avec easyphp 5.3 donc avec la version 5.3 de php et je l'ai tester que sous firefox 3.5 et IE8
|
|
Cette discussion est classée dans : image, photos, galerie, miniature, rognage
Répondre à ce message
Sujets en rapport avec ce message
Copyright image [ par kimengumi ]
BonjourJ'ai bien aimé le script de webdesignasp pour écrire un copyright sur les images.En fait, j'enregistre l'image telle quelle sur mon serveur et
creer un liens permettant de downloader un groupe d'image [ par french4u ]
OK, je suis un grand debutant et je ne sais pas si cela est possible. voila le truc:J'ai une galerie d'image (donc cree en PHP), c'est sympa de regard
Liens PHP (appel d'un fichier PHP) [ par vincf1 ]
Bonjour à tous tout d'abord Voila, j'explique mon petit soucis (je suis novice en PHP ).Mon but est d'afficher une image miniat
affichage d'image avec bdd [ par hary89 ]
bonjour,Je débute en php, j'utilise Dreamweaver. J'ai créé une base de donnée, ma page d'affichage de photo va chercher les noms de fichier dedant. Mo
reduction image [ par willinfeo ]
Bonjour à tous,Je travaille sur des photos aeriennes avec une resolution de 2000/2000 pixels pour un territoire de 1km/1km.Chacunes des images avant d
affichage d'image [ par keryg ]
Le visiteur rempli un formulaire. Les données récuperées (le nom de la personne)doivent permettre l'affichage de la ou des photos le concernant (le no
Compression d'image automatique [ par w_minisplash_w ]
Salut all, C'est le premier message que je dépose alors je vais essayer d'être clair... Je vous expose le problème: Je veux gérer un systè
[Site Foot] Galerie photos [ par antho11 ]
Bonjour,Pour mon site de Foot (AJ Auxerre), j'ai plein de photos donc je souhaiteraisréaliser une galerie photo un peu dans le style de celle-ci http:
php [ par alouest3 ]
php galerie voila j'ai besoin de faire une galerie ou le gar choisi son image valide et que cele ci apparaise en haut un peu comme ca http://tetsuya.k
Enregistrement d'image depuis un sous dossier. [ par needle ]
Salut tous le monde!!! Voila j'expose mon cas: J'upload une image et la redimensionne avant de l'enregistrer sur le serveur (free) pour cela j'utilise
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|