Vous n'êtes pas connecté.
Pages: 1
Titre : Utilisation de GD
Version : v0.1
Pour 2BGal : 3.1 RC1
Date : 16 décembre 2006
Auteur : Gigli
Description : Utilisation de la libraire GD pour afficher les images
Base de donnée modifiée
Fichiers modifiés :
- admin/affiche_album.inc.php
- admin/affiche_image.inc.php
- admin/default.inc.php
- admin/photointro_direct.inc.php
- admin/statdefault.inc.php
- album.php
- img.php
- index.php
- serie.php
Fichiers ajoutés:
- admin/get_img.php
- admin/get_thumb.php
- get_img.php
- get_thumb.php
Licence : GPL
L'objectif de cette modification est de permettre d'une part une meilleure protection des images (quel intérêt de mettre un mot de passe pour une galerie si on peut accéder aux images directement sur le serveur?), et d'autre part de bénéficier d'améliorations quant à l'affichage des images (ex: ajout automatique de filigrane, redimensionnement des images, effet d'ombres, ....).
L'affichage d'une image se fait ainsi par l'appel d'un script php contenant en paramètre l'id de l'image et le secureid si le mot de passe est indiqué, au lieu de l'accès direct au fichier
<img src="http://site/rep/image.jpg"> remplacé par <img src="http://site/get_img.php?id_img=123">
La première modification à faire concerne la base de données. Le champ "image" de la base "galbumlist" contient l'accès physique à l'image miniature. Il doit être remplacé par l'id de l'image originale.
Par exemple si le champ contient "rep1/mini_img_1234.jpg" il faut trouver l'id de l'image img_1234.jpg dans la base gimagelist (ex:121) et le mettre à la place de "rep1/mini_img_1234.jpg".
Dans admin/ créer deux fichiers:
Fichier: admin/get_img.php
<?php
//Entrée:
//id_img=id de l'image à afficher
require("../lib/fonctions.inc.php");
$start_time=get_moment();
require("../connect.inc.php");
require("../config.inc.php");
//Vérification du nom du script appelant
//Vide si le script est appellé directement en ligne de commande => on interdit
if(empty($_SERVER["HTTP_REFERER"]))
exit(1);
//recuperation des variables
if (isset($_GET["id_img"])) {$id_img=$_GET["id_img"];} else {erreurRC(3);}
//securite : type des variables
if (!ereg("^([0-9]+)$",$id_img,$secereg)) {erreurRC(3);}
//connexion a la database
($db = @mysql_connect("$serveur", "$utilisateur", "$motdepasse")) or erreurRC(1);
@mysql_select_db("$database",$db) or erreurRC(2);
$chaine="SELECT url,folder FROM ".$tbl_ilist." LEFT JOIN ".$tbl_alist." ON ".$tbl_ilist.".album=".$tbl_alist.".id WHERE ".$tbl_ilist.".id=".$id_img;
$request = MYSQL_QUERY($chaine);
$nb_rep = MYSQL_NUMROWS($request);
if ($nb_rep!=1) {erreurRC(4);}
//Récupération du nom de l'image
$img = mysql_result($request,0,"url");
//Récupération du nom du répertoire
$directory = mysql_result($request,0,"folder");
$imageData=imagecreatefromjpeg("../img/$directory/$img");
//On récupère la date et l'heure dans l'Exif
$exif=exif_read_data("../img/$directory/$img");
if(!$exif["DateTimeOriginal"]===FALSE) {
ereg("^([0-9]{4}):([0-9]{2}):([0-9]{2})(.*)",$exif["DateTimeOriginal"],$regs);
$aff="$regs[3]/$regs[2]/$regs[1]$regs[4]";
list($srcw,$srch)=getimagesize("../img/$directory/$img");
imagestring($imageData,3,10,$srch-20,$aff,imagecolorallocate($imageData,247,245,204));
}
header("Content-type: image/jpeg");
imageJpeg($imageData);
imagedestroy($imageData);
?>Fichier: admin/get_img.php
<?php
//Entrée:
//id_img=id de l'image à afficher en miniature
require("../lib/fonctions.inc.php");
$start_time=get_moment();
require("../connect.inc.php");
require("../config.inc.php");
//securite #1 : pas d'appel direct du fichier
if(empty($_SERVER["HTTP_REFERER"]))
exit(1);
//recuperation des variables
if (isset($_GET["id_img"])) {$id_img=$_GET["id_img"];} else {erreurRC(3);}
//securite : type des variables
if (!ereg("^([0-9]+)$",$id_img,$secereg)) {erreurRC(3);}
//connexion a la database
($db = @mysql_connect("$serveur", "$utilisateur", "$motdepasse")) or erreurRC(1);
@mysql_select_db("$database",$db) or erreurRC(2);
$chaine="SELECT url,folder FROM ".$tbl_ilist." LEFT JOIN ".$tbl_alist." ON ".$tbl_ilist.".album=".$tbl_alist.".id WHERE ".$tbl_ilist.".id=".$id_img;
$request = MYSQL_QUERY($chaine);
$nb_rep = MYSQL_NUMROWS($request);
if ($nb_rep!=1) {erreurRC(4);}
//Récupération du nom de l'image
$img = mysql_result($request,0,"url");
//Récupération du nom du répertoire
$directory = mysql_result($request,0,"folder");
$imageData=imagecreatefromjpeg("../img/$directory/mini_$img");
/* //On récupère la date et l'heure dans l'Exif
$exif=exif_read_data("Images/$directory/$img");
if(!$exif["DateTimeOriginal"]===FALSE) {
ereg("^([0-9]{4}):([0-9]{2}):([0-9]{2})(.*)",$exif["DateTimeOriginal"],$regs);
$aff="$regs[3]/$regs[2]/$regs[1]$regs[4]";
list($srcw,$srch)=getimagesize("Images/$directory/$img");
imagestring($imageData,3,10,$srch-20,$aff,imagecolorallocate($imageData,247,245,204));
}
*/
header("Content-type: image/jpeg");
imageJpeg($imageData);
imagedestroy($imageData);
?>Fichier: admin/affiche_album.inc.php
Ligne 49 remplacer :
$chaine="SELECT nom,folder FROM $tbl_alist WHERE id=$id_album";
par
$chaine="SELECT nom,folder,secureid FROM $tbl_alist WHERE id=$id_album";
Ligne 52, ajouter :
$secure = mysql_result($res,0,"secureid");
Ligne 94, remplacer :
$url_imgbig = "../img/".$folder."/".$url_img; $url_imgmini = "../img/".$folder."/mini_".$url_img; $isfile = is_file($url_imgmini);
par
$url_imgbig = "get_img.php?id_img=$id_img".($secure?"&secure=$secure":""); $url_imgmini = "../img/".$folder."/mini_".$url_img; $isfile = is_file($url_imgmini); $url_imgmini = "get_thumb.php?id_img=$id_img".($secure?"&secure=$secure":"");
Fichier: admin/affiche_image.inc.php
Ligne 57, ajouter:
$url_imgbig = "get_img?id_img=$id_img";
Fichier: admin/default.inc.php
Ligne 64, ajouter:
$secure = mysql_result($list_album,$i,"secureid");
Ligne 151, remplacer:
echo "<td><img src=\"../img/".$image_album."\" alt=\"\" /></td>\n";
par
echo "<td><img src=\"get_thumb.php?id_img=$image_album".($secure?"&secure=$secure":"")."\" alt=\"\" /></td>\n";
Fichier: admin/photointro_direct.inc.php
Ligne 49, remplacer:
$chaine2="UPDATE ".$tbl_alist." SET image='".$folder."/mini_".$url."' WHERE id=".$id_album;
par
$chaine2="UPDATE ".$tbl_alist." SET image='".$id_img."' WHERE id=".$id_album;
Fichier: admin/statdefault.inc.php
Ligne 125, remplacer:
echo " <td><img src=\"../img/".$folder_image."/mini_".$url_image."\" alt=\"X\" width=\"50\" /></td>\n";
par
echo " <td><img src=\"get_thumb?id_img=$id_image\" alt=\"X\" width=\"50\" /></td>\n";
Ligne 162, remplacer
echo "<td><img src=\"../img/".$folder_image."/mini_".$url_image."\" alt=\"X\" width=\"50\" /></td>\n";
par
echo "<td><img src=\"get_thumb?id_img=$id_image\" alt=\"X\" width=\"50\" /></td>\n";
Terminé pour la partie admin.
Dans le répertoire racine de l'installation, créer deux fichiers:
Fichier get_img.php:
<?php
//Entrée:
//id_img=id de l'image à afficher
//secure=code de protection de la galerie
include("lib/template.inc");
require("lib/fonctions.inc.php");
$start_time=get_moment();
require("connect.inc.php");
require("config.inc.php");
//Vérification du nom du script appelant
//Vide si le script est appellé directement en ligne de commande => on interdit
if(empty($_SERVER["HTTP_REFERER"]))
exit(1);
//recuperation des variables
if (isset($_GET["id_img"])) {$id_img=$_GET["id_img"];} else {erreurRC(3);}
if (isset($_GET["secure"])) {$secure=$_GET["secure"];} else {$secure="";}
//securite : type des variables
if (!ereg("^([0-9]+)$",$id_img,$secereg)) {erreurRC(3);}
if (((!ereg("^([a-z0-9]+)$",$secure,$secereg)) OR (strlen($secure)!=20)) AND (strlen($secure)!=0)) {erreurRC(3);}
//connexion a la database
($db = @mysql_connect("$serveur", "$utilisateur", "$motdepasse")) or erreurRC(1);
@mysql_select_db("$database",$db) or erreurRC(2);
//As-t-on le droit de lire ce répertoire?
//verif pwd
$chaine="SELECT album,url FROM ".$tbl_ilist." WHERE id=".$id_img;
$request = MYSQL_QUERY($chaine);
$nb_rep = MYSQL_NUMROWS($request);
if ($nb_rep!=1) {erreurRC(4);}
$id_album = mysql_result($request,0,"album");
//Récupération du nom de l'image
$img = mysql_result($request,0,"url");
$chaine="SELECT secureid,folder FROM ".$tbl_alist." WHERE id=".$id_album;
$request = MYSQL_QUERY($chaine);
$secureid_album = mysql_result($request,0,"secureid");
if ($secure!=$secureid_album) {erreurRC(5);}
//Récupération du nom du répertoire
$directory = mysql_result($request,0,"folder");
$imageData=imagecreatefromjpeg("img/$directory/$img");
//On récupère la date et l'heure dans l'Exif
$exif=exif_read_data("img/$directory/$img");
if(!$exif["DateTimeOriginal"]===FALSE) {
ereg("^([0-9]{4}):([0-9]{2}):([0-9]{2})(.*)",$exif["DateTimeOriginal"],$regs);
$aff="$regs[3]/$regs[2]/$regs[1]$regs[4]";
list($srcw,$srch)=getimagesize("img/$directory/$img");
imagestring($imageData,3,10,$srch-20,$aff,imagecolorallocate($imageData,247,245,204));
}
header("Content-type: image/jpeg");
imageJpeg($imageData);
imagedestroy($imageData);
?>Fichier get_thumb.php:
<?php
//Entrée:
//id_img=id de l'image à afficher en miniature
//secure=code de protection de la galerie
include("lib/template.inc");
require("lib/fonctions.inc.php");
$start_time=get_moment();
require("connect.inc.php");
require("config.inc.php");
//Vérification du nom du script appelant
//Vide si le script est appellé directement en ligne de commande => on interdit
if(empty($_SERVER["HTTP_REFERER"]))
exit(1);
//recuperation des variables
if (isset($_GET["id_img"])) {$id_img=$_GET["id_img"];} else {erreurRC(3);}
if (isset($_GET["secure"])) {$secure=$_GET["secure"];} else {$secure="";}
//securite : type des variables
if (!ereg("^([0-9]+)$",$id_img,$secereg)) {erreurRC(3);}
if (((!ereg("^([a-z0-9]+)$",$secure,$secereg)) OR (strlen($secure)!=20)) AND (strlen($secure)!=0)) {erreurRC(3);}
//connexion a la database
($db = @mysql_connect("$serveur", "$utilisateur", "$motdepasse")) or erreurRC(1);
@mysql_select_db("$database",$db) or erreurRC(2);
//As-t-on le droit de lire ce répertoire?
//verif pwd
$chaine="SELECT album,url FROM ".$tbl_ilist." WHERE id=".$id_img;
$request = MYSQL_QUERY($chaine);
$nb_rep = MYSQL_NUMROWS($request);
if ($nb_rep!=1) {erreurRC(4);}
$id_album = mysql_result($request,0,"album");
//Récupération du nom de l'image
$img = mysql_result($request,0,"url");
$chaine="SELECT secureid,folder FROM ".$tbl_alist." WHERE id=".$id_album;
$request = MYSQL_QUERY($chaine);
$secureid_album = mysql_result($request,0,"secureid");
if ($secure!=$secureid_album) {erreurRC(5);}
//Récupération du nom du répertoire
$directory = mysql_result($request,0,"folder");
$imageData=imagecreatefromjpeg("img/$directory/mini_$img");
/* //On récupère la date et l'heure dans l'Exif
$exif=exif_read_data("Images/$directory/$img");
if(!$exif["DateTimeOriginal"]===FALSE) {
ereg("^([0-9]{4}):([0-9]{2}):([0-9]{2})(.*)",$exif["DateTimeOriginal"],$regs);
$aff="$regs[3]/$regs[2]/$regs[1]$regs[4]";
list($srcw,$srch)=getimagesize("Images/$directory/$img");
imagestring($imageData,3,10,$srch-20,$aff,imagecolorallocate($imageData,247,245,204));
}
*/
header("Content-type: image/jpeg");
imageJpeg($imageData);
imagedestroy($imageData);
?>Fichier: album.php
Ligne 141, remplacer:
$url="img/".$image_browsealbum;
par
$url="get_thumb.php?id_img=$image_browsealbum".($secure?"&secure=$secure":"");
Fichier: img.php
Ligne 123, ajouter:
$url_imgbig = "get_img.php?id_img=$id_img".($secure?"&secure=$secure":"");
Fichier: index.php
Ligne 99, remplacer:
$url="img/".$image_browsealbum;
par
$url=$secureid_browsealbum?"img/".$image_browsealbum:"get_thumb.php?id_img=$image_browsealbum";
Ligne 236, remplacer:
$url="img/".$folder_image."/mini_".$url_image; $url_imgbig = "img/".$folder_image."/".$url_image;
par
$url="get_thumb.php?id_img=$id_image"; $url_imgbig = "get_img.php?id_img=$id_image";
Ligne 288, remplacer
$url="img/".$folder_image."/mini_".$url_image; $url_imgbig = "img/".$folder_image."/".$url_image;
par
$url="get_thumb.php?id_img=$id_image"; $url_imgbig = "get_img.php?id_img=$id_image";
Fichier: serie.php
Ligne 160, remplacer:
$url_imgmini = "img/".$folder_currentalbum."/mini_".$url_img;
par
$url_imgmini = "get_thumb.php?id_img=$id_img".($secure?"&secure=$secure":"");
Et enfin pour protéger les images, dans le répertoire img/ créer le fichier .htaccess contenant la ligne
deny from all
Et voilà pour la modification, j'espère n'avoir rien oublié.
Vous devriez obtenir quelque chose de similaire à ma galerie. Noter l'ajout à la volée de la date/heure contenue dans l'exif du fichier origniale.
Merci de me dire si vous trouvez cette modification pertinente, et les améliorations à apporter.
Dernière modification par gigli (16-12-2006 11:04:41)
Hors ligne
Bonjour gigli
Peut'on ajouter du texte ( genre : ©PALM ) avant la date et l'heurre sur la photo et ou ?
Je n'y connait en rien en programmation et j'ai beau relire tes fichiers modifiés, je ne vois pas ou.
Merci pour cette modif. que j'ai integrée rapidement aprés avoir réinstallé 2BGal.
Elle ne fonctionné pas avec les autres modif. (Vidéo, Image intro aléatoire .....)
Philippe
Hors ligne
Philippe a écrit:
Bonjour gigli
Peut'on ajouter du texte ( genre : ©PALM ) avant la date et l'heurre sur la photo et ou ?
Je n'y connait en rien en programmation et j'ai beau relire tes fichiers modifiés, je ne vois pas ou.
Dans le fichier get_img.php situé à la racine, remplace la ligne 52:
$aff="$regs[3]/$regs[2]/$regs[1]$regs[4]";
par
$aff="©PALM $regs[3]/$regs[2]/$regs[1]$regs[4]";
Hors ligne
Concernant l'add-on "Image aléatoire":
Voici le fichier foncGetRandomImage.inc.php à utiliser:
<?php
//ADD-ON GetRandomImage
function getFils($idPere,$tAlbumList) {
$arrFils = array();
//-- récupération des fils du rép
$chaine = "SELECT id, gere FROM ".$tAlbumList." WHERE idpere=".$idPere;
$request = MYSQL_QUERY($chaine);
$nb_fils = MYSQL_NUMROWS($request);
if ($nb_fils > 0) {
for($li=0;$li<$nb_fils;$li++) {
$id_fils = mysql_result($request,$li,"id");
$type_fils = mysql_result($request,$li,"gere");
if ($type_fils == "pere") {
$arrFils = $arrFils + getFils($id_fils,$tAlbumList);
} else {
if ($id_fils > 0) {
$arrFils[] = $id_fils;
}
}
}
}
return $arrFils;
} //end getFils
//ADD-ON END GetRandomImage
function getRandomImage($image_album,$gere_album,$id_album,$tAlbumList,$tImgList) {
//-- si on n'a pas d'image define on prends une au hasard
if ($image_album == "../mini_default.jpg") {
$arr_fils = array();
//-- si c'est album pere on prend au hasard un de ses fils
if ($gere_album == "pere") {
//-- on cherche les fils
$arr_fils = getFils($id_album,$tAlbumList);
$nb_fils = count($arr_fils);
if ($nb_fils > 0) {
$rand_fils = rand(0,$nb_fils-1);
$fils_id = $arr_fils[$rand_fils];
}
} else {
$fils_id = $id_album;
}
//-- recuperer une photo aleatoire du repertoire choisi
//$chaine = "SELECT i.url, a.folder FROM ".$tImgList." i, ".$tAlbumList." a WHERE a.id=i.album and i.album=".$fils_id;
$chaine = "SELECT i.id FROM ".$tImgList." i, ".$tAlbumList." a WHERE a.id=i.album and i.album=".$fils_id;
$request = MYSQL_QUERY($chaine);
$nb_img = MYSQL_NUMROWS($request);
if ($nb_img > 0) {
$rand_img = rand(0,$nb_img-1);
$image_album = mysql_result($request,$rand_img,"id");;
}
}
return $image_album;
} //end getRandomImage
?>Hors ligne
Bonjour,
Je fait la modif. immédiatement
![]()
Et le plus, les photos aléatoires
Merci gigli
![]()
![]()
Ps : pour le ©, je pense qu'il faut le coder en © mais cela ne marche pas !!
Dernière modification par Philippe (21-12-2006 23:08:10)
Hors ligne
C'est un problème d'encodage lié à la fonction de création de la chaine de caractères. Je me charge de trouver une parade.
Et je regarde aussi pour les vidéos.
Hors ligne
gigli a écrit:
C'est un problème d'encodage lié à la fonction de création de la chaine de caractères. Je me charge de trouver une parade.
Et je regarde aussi pour les vidéos.
Merci gigli ![]()
J'ai des vidéos mais avec la nouvelle versions 2BGal, je n'arrive plus a les afficher.
C'est sympa de voir ce module.
Joyeux Noël à tout le monde
Et une bonne fin d'année
Philippe
PS1 : Merci
PS2 : "La création de la chaine de caractères" Poura-t-on modifier la taille de la police ??
PS3 : Merci
![]()
Dernière modification par Philippe (02-01-2007 00:02:37)
Hors ligne
bonjour,
merci pour ce code, c'est excellent !
par contre ça efface les donnees exif, il n'y a plus rien, a part la date et l'heure sur la tof c'est tout, c'est bien dommage, y a t-il une parade ?
merci
fred
Hors ligne
gigli a écrit:
Philippe a écrit:
Bonjour gigli
Peut'on ajouter du texte ( genre : ©PALM ) avant la date et l'heurre sur la photo et ou ?
Je n'y connait en rien en programmation et j'ai beau relire tes fichiers modifiés, je ne vois pas ou.Dans le fichier get_img.php situé à la racine, remplace la ligne 52:
Code:
$aff="$regs[3]/$regs[2]/$regs[1]$regs[4]";par
Code:
$aff="©PALM $regs[3]/$regs[2]/$regs[1]$regs[4]";
salut, oki tu parle pour le copyright , mais plus haut tu parle d'image en filigramme, moi evidemment ce qui m'interesse est de mettre mon copyright sur l'image (il s'agit d'un logo que je peux mettre dans le format adéquat, c'est pas un soucis) , mais comment l'insérer ?
j'ai aussi une autre question, j'aimerais que mes images puissent etre télécharger par un bouton , au format HD , mais qu'elle comportent surtout le copyright de mon logo , tu pense pouvoir me donner une réponse ?
ps je t'ai ajouter a mon msn en esperant que tu puisse m'aider ! ![]()
bon j'ai trouver pour l'image :
Dans le fichier get_img.php situé à la racine, à la ligne 56:
insérez :
$source = imagecreatefromgif("copyright.gif"); //on ouvre l'image source donc le copyright
$details_src = getimagesize("copyright.gif"); //on récupère les dimensions de l'image source
$y = imagesy($imageData)-imagesy($source);
imagecopymerge($imageData,$source, 0, $y, 0, 0, $details_src[0],$details_src[1],50); //on copie l'imageBon pour le bouton de dwl hd je cherche encore , par contre j'aimerais aussi que cette image la soit redimentionner, mais pas en super grand, genre en 300x300 , mais je sais tjs pas comment faire ... si je trouve pareil je vous donne les infos.
Dernière modification par ViriisXP (05-02-2007 03:32:53)
Hors ligne
Salut ViriisXP
Le scripte pour ajouter le copyright et pas mal.
Je l'ai mis avec le texte de gigli.
Une question :
Peut’ on redimensionner, positionner le copyright ?? dans :
imagecopymerge($imageData,$source, 0, $y, 0, 0, $details_src[0],$details_src[1],50); //on copie l'image
Merci encore a vous tous qui faite avancer le scripte
Philippe
Hors ligne
Philippe a écrit:
Salut ViriisXP
Le scripte pour ajouter le copyright et pas mal.
Je l'ai mis avec le texte de gigli.
Une question :
Peut’ on redimensionner, positionner le copyright ?? dans :
imagecopymerge($imageData,$source, 0, $y, 0, 0, $details_src[0],$details_src[1],50); //on copie l'image
Merci encore a vous tous qui faite avancer le scripte
Philippe
La base est : imagecopymerge ($imageData, $source, $dest_x, $dest_y, $src_x, $src_y, $src_largeur, $src_hauteur, $taux);
$imageData = L'image qui sera traiter .
$source = L'image du copyright .
$dest_x = La position de ton copyright sur l'axe X
$dest_y = La position de ton copyright sur l'axe Y (en l'occurence pour nous j'y ai mis $y ce qui est le bas de l'image $imageData en l'occurence), si tu change le $y par une valeur çà déplacera le copyright sur l'axe Y
$src_x = Le point de départ de la selection du copyright sur l'axe X.
$src_y = Le point de départ de la selection du copyright sur l'axe Y.
$src_largeur= La taille de ton copyright sur l'axe X (en l'occurence pour nous il s'agit des paramètres qui ont été récupérer dans "$details_src = getimagesize("copyright.gif");" donc : $src_largeur = $details_src[0]
$src_hauteur= La taille de ton copyright sur l'axe Y(en l'occurence pour nous il s'agit des paramètres qui ont été récupérer dans "$details_src = getimagesize("copyright.gif");" donc : $src_largeur = $details_src[1]
$taux = Le taux de compression de ton image au final .Donc admettons que vous avez une image ou on met le copyright :
En haut a droite : imagecopymerge($imageData,$source, $y, 0, 0, 0, $details_src[0],$details_src[1],50); //on copie l'image En haut a gauche : imagecopymerge($imageData,$source, 0, 0, 0, 0, $details_src[0],$details_src[1],50); //on copie l'image En bas a droite : imagecopymerge($imageData,$source, $y, $y, 0, 0, $details_src[0],$details_src[1],50); //on copie l'image En bas a gauche : (celui de départ de mon code) imagecopymerge($imageData,$source, 0, $y, 0, 0, $details_src[0],$details_src[1],50); //on copie l'image
Voila ^^
PS : Notions de base
GD sait dessiner des formes basiques si vous lui indiquez où est le crayon, le papier et ce que vous voulez dessiner. Tout d'abord, il faut connaître le système de coordonnées de GD. Pour GD, l'origine du carré est en haut à gauche. L'axe horizontal est l'axe des abscisses (x) et l'axe vertical est l'axe des ordonnées (y). Il n'y a pas de troisième dimension avec GD. On ne travaille qu'en 2D. Il y a des fois, c'est assez compliqué avec 2 dimensions seulement.
Hors ligne
Bon j'ai trouver pour le redimentionnement de l'image :
Moi j'utilise pas l'exif donc :
Ouvrir : get_img.php:
A la ligne 46 : trouver :
$imageData=imagecreatefromjpeg("img/$directory/$img");
//On récupère la date et l'heure dans l'Exif
$exif=exif_read_data("img/$directory/$img");
if(!$exif["DateTimeOriginal"]===FALSE) {
ereg("^([0-9]{4}):([0-9]{2}):([0-9]{2})(.*)",$exif["DateTimeOriginal"],$regs);
$aff="$regs[3]/$regs[2]/$regs[1]$regs[4]";
list($srcw,$srch)=getimagesize("img/$directory/$img");
imagestring($imageData,3,10,$srch-20,$aff,imagecolorallocate($imageData,247,245,204));
}Remplacer par :
$ratio = .3;
// Calcul des nouvelles dimensions
list($largeur, $hauteur) = getimagesize("img/$directory/$img"); //list est un moyen plus pratique pour ne récupérer que ce qu'on veut
$n_largeur = $largeur * $ratio;
$n_hauteur = $hauteur * $ratio;
//on ouvre la source
$source = imagecreatefromjpeg("img/$directory/$img");
//création de la destination
$destination = imagecreatetruecolor($n_largeur, $n_hauteur);
// Redimensionnement
imagecopyresized($destination, $source, 0, 0, 0, 0, $n_largeur, $n_hauteur, $largeur, $hauteur);
// [ajout du copyright]
$source = imagecreatefromgif("copyright.gif"); //on ouvre l'image source donc le copyright
$details_src = getimagesize("copyright.gif"); //on récupère les dimensions de l'image source
$y = imagesy($destination)-imagesy($source);
imagecopymerge($destination,$source, 0, $y, 0, 0, $details_src[0],$details_src[1],50); //on copie l'imageHors ligne
Bon pour le download de l'image en full qualité :
Créer un fichier : dwl_img.php
<?php
// on spécifie le type de fichier créer (ici une image de type jpeg)
//connexion a la database
require("connect.inc.php");
require("config.inc.php");
($db = @mysql_connect("$serveur", "$utilisateur", "$motdepasse")) or erreurRC(1);
@mysql_select_db("$database",$db) or die('Impossible de lire dans la bdd');
if (isset($_GET["id_img"])) {$id_img=$_GET["id_img"];}
//As-t-on le droit de lire ce répertoire?
//verif pwd
$chaine="SELECT album,url FROM ".$tbl_ilist." WHERE id=".$id_img;
$request = MYSQL_QUERY($chaine);
$nb_rep = MYSQL_NUMROWS($request);
if ($nb_rep!=1) {erreurRC(4);}
$id_album = mysql_result($request,0,"album");
//Récupération du nom de l'image
$img = mysql_result($request,0,"url");
$chaine="SELECT secureid,folder FROM ".$tbl_alist." WHERE id=".$id_album;
$request = MYSQL_QUERY($chaine);
//Récupération du nom du répertoire
$directory = mysql_result($request,0,"folder");
$ratio = 1;
// Calcul des nouvelles dimensions
list($largeur, $hauteur) = getimagesize("img/$directory/$img"); //list est un moyen plus pratique pour ne récupérer que ce qu'on veut
$n_largeur = $largeur * $ratio;
$n_hauteur = $hauteur * $ratio;
//on ouvre la source
$source = imagecreatefromjpeg("img/$directory/$img");
//création de la destination
$destination = imagecreatetruecolor($n_largeur, $n_hauteur);
// Redimensionnement
@imagecopyresized($destination, $source, 0, 0, 0, 0, $n_largeur, $n_hauteur, $largeur, $hauteur)or die ("Erreur lors de la création de l'image");
// [ajout du copyright]
$source = imagecreatefromgif("copyright.gif"); //on ouvre l'image source donc le copyright
$details_src = getimagesize("copyright.gif"); //on récupère les dimensions de l'image source
$y = imagesy($destination)-imagesy($source);
@imagecopymerge($destination,$source, 0, $y, 0, 0, $details_src[0],$details_src[1],50)or die ("Erreur lors de la création de l'image"); //on copie l'image
header('Content-type: image/jpg');
header("Content-Disposition: attachment; filename=$img");
imagejpeg($destination)or die ("Attention l'image $destination n'as pas pus etre afficher");
imagedestroy($destination)or die ("Attention l'image $destination n'as pas pus etre supprimer");
imagedestroy($imageData)or die ("Attention l'image $imageData n'as pas pus etre supprimer");
imagedestroy($source)or die ("Attention l'image $source n'as pas pus etre supprimer");
?>Ouvrir le fichier img.tpl de votre style :
Ligne 29 trouvez :
<img class="galimgafficherphoto" src="{URLIMGBIG}" title="{IDIMG}" alt="X" />Remplacer par :
<a href="dwl_img.php?id_img={IDIMG}" title="Télécharger l'image en qualité HD"><img class="galimgafficherphoto" src="{URLIMGBIG}" title="{IMGLABEL}" alt="{IDIMG}" /></a>Voilà , vous avez des pages de miniatures, des images moyennes avec copyright, et quand vous cliquez sur l'image , vous télécharger l'image en full quality .
Hors ligne
Bonjour,
Ca faisait un bout de temps que je ne m'étais pas connecté, et je suis content de trouver des adeptes de cette adaptation.
Et bravo pour les ajouts.
Je pense que l'on pourrait aller plus loin, en proposant dans les options les tailles d'affichage, le texte affiché ou une image de copyright, etc etc...
Concernant l'upload de vidéos j'ai trouvé un moyen de le faire, mais ça fonctionne assez mal chez Free à cause des limitations imposées.
a+
Hors ligne
Et enfin pour protéger les images, dans le répertoire img/ créer le fichier .htaccess contenant la ligne
Code:
deny from all
Bonjour,
je ne comprend pourquoi il faut créer ce dernier fichier et comment faut-il le nommer.
".htaccess" et l'extension?
Hors ligne
merci pour ce tuto très intéressant et bien pratique ! ;-)
Hors ligne
bonsoir,
Je voudrais savoir si il est possible de mettre le copyright au centre de la photo afin d'éviter que les gens le supprime juste en rognant les coter ?
Hors ligne
Pages: 1