source: spip-zone/_plugins_/_dev_/SPIP-album/inc/album_fonctions.php @ 18547

Last change on this file since 18547 was 18547, checked in by xebiaut@…, 12 years ago

Correction d'une erreur dans la definition du positionnement du copyright

File size: 7.3 KB
Line 
1<?php
2/*      *********************************************************************
3        *
4        * Copyright (c) 2007
5        * Xavier Burot
6        *
7        * SPIP-ALBUM : Programme d'affichage de photos
8        *
9        * Fichier : album_fonctions.php
10        *
11        * Ce programme est un logiciel libre distribue sous licence GNU/GPL.
12        *
13        *********************************************************************
14*/
15
16if (!defined("_ECRIRE_INC_VERSION")) return;
17
18//
19// -- fonction specifique pour afficher images locales ------------------
20// Balise #IMGLOCAL - Merci à Triton-pointcentral pour ce code.
21//
22function balise_IMGLOCAL($p) {
23        if ($p->param && !$p->param[0][0]) {
24                $p->code = calculer_liste ($p->param[0][1],
25                                                $p->descr,
26                                                $p->boucles,
27                                                $p->id_boucle);
28                $alt =  calculer_liste ($p->param[0][2],
29                                        $p->descr,
30                                        $p->boucles,
31                                        $p->id_boucle);
32                // autres filtres
33                array_shift($p->param);
34        }
35
36        // recherche du chemin de l'image (comme #CHEMIN)
37        $p->code = 'find_in_path(' . $p->code . ')';
38        // passage en image
39        $p->code = '"<img src=\'".' . $p->code . '."\' alt=\'".' . $alt . '."\' />"';
40
41        #$p->interdire_scripts = true;
42        return $p;
43}
44
45//
46// -- fonction specifique pour afficher un copyright dans une image -----
47// Filtre |image_watermark - D'après le programme propose par Visualight
48// Cf. http://www.asp-php.net/scripts/asp-php/watermark-2.php
49//
50function image_watermark($im) {
51        // Charge la librairie de traitements des images sous SPIP
52        include_spip('inc/filtres_images');
53
54        if (!function_exists('lire_config')) {
55                tester_variable('watermarktype', 'none');
56                tester_variable('watermarkalignh', 'center');
57                tester_variable('watermarkalignv', 'center');
58                tester_variable('watermarkmargin', '10');
59                tester_variable('watermarkopacity', '20');
60                tester_variable('watermarkimage', '/img_pack/copyright.png');
61                tester_variable('watermarktext', 'Copyright (c) '.date('Y').' '.$GLOBALS['meta']['adresse_site']);
62                tester_variable('watermarkfont', '3');
63                tester_variable('watermarkshadow', 'yes');
64                tester_variable('watermarkcolor', 'FFFFFF');
65        } else {
66                tester_variable('watermarktype', lire_config('album/watermarktype','none'));
67                tester_variable('watermarkalignh', lire_config('album/watermarkalignh','center'));
68                tester_variable('watermarkalignv', lire_config('album/watermarkalignv','center'));
69                tester_variable('watermarkmargin', lire_config('album/watermarkmargin','10'));
70                tester_variable('watermarkopacity', lire_config('album/watermarkopacity','20'));
71                tester_variable('watermarkopacity', lire_config('album/watermarkimage','/img_pack/copyright.png'));
72                tester_variable('watermarktext', lire_config('album/watermarktext','Copyright (c) '.date('Y').' '.$GLOBALS['meta']['adresse_site']));
73                tester_variable('watermarkfont', lire_config('album/watermarkfont','3'));
74                tester_variable('watermarkshadow', lire_config('album/watermarkshadow','yes'));
75                tester_variable('watermarkcolor', lire_config('album/watermarkcolor','FFFFFF'));
76        }
77
78        // Declaration des valeurs globales
79        global  $watermarktype,         // type de watermark (none / image / text)
80                        $watermarkalignh,       // type d'alignement horizontal (left / right, center)
81                        $watermarkalignv,       // type d'alignement vertical (top / bottom / center)
82                        $watermarkmargin,       //
83                        $watermarkimage,        //
84                        $watermarkopacity,      //
85                        $watermarktext,         //
86                        $watermarkfont,         //
87                        $watermarkshadow,       //
88                        $watermarkcolor;        //
89
90        // Determine le marqueur permettant la recreation des vignettes en cas de modification du mode protection.
91        switch($watermarktype){
92                case 'image':
93                        $mark = 'wmarki';
94                        break;
95                case 'text':
96                        $mark = 'wmarkt';
97                        break;
98                default:
99                        $mark = 'wmark';
100        }
101
102        $image = image_valeurs_trans($im, $mark);
103        if (!$image) return("");
104
105      $x_i = $image["largeur"];
106      $y_i = $image["hauteur"];
107
108        $im = $image["fichier"];
109        $dest = $image["fichier_dest"];
110
111        $creer = $image["creer"];
112
113        if ($creer) {
114                $im = $image["fonction_imagecreatefrom"]($im);
115
116                switch($watermarktype){
117                        case 'image':
118                                $masque = find_in_path($watermarkimage);
119                                $mask = image_valeurs_trans($masque,"");
120
121                                if (!is_array($mask)) return("");
122                                $im_m = $mask["fichier"];
123                                $x_m = $mask["largeur"];
124                                $y_m = $mask["hauteur"];
125
126                                $im1 = $mask["fonction_imagecreatefrom"]($masque);
127                                if ($mask["format_source"] == "gif" AND function_exists('ImageCopyResampled')) {
128                                        $im1_ = imagecreatetruecolor($x_m, $y_m);
129                                        // Si un GIF est transparent, fabriquer un PNG transparent pour conserver la transparence
130                                        if (function_exists("imageAntiAlias")) imageAntiAlias($im1_,true);
131                                        @imagealphablending($im1_, false);
132                                        @imagesavealpha($im1_,true);
133                                        @ImageCopyResampled($im1_, $im1, 0, 0, 0, 0, $x_m, $y_m, $x_m, $y_m);
134                                        imagedestroy($im1);
135                                        $im1 = $im1_;
136                                }
137
138                        if ($im1) {
139                                        // Calcule du positionnement vertical de l'icone copyright
140                                        switch($watermarkalignv){
141                                                case 'bottom':
142                                                        $watermark_y = $y_i - $y_m - $watermarkmargin;
143                                                        break;
144                                                case 'center':
145                                                        $watermark_y = (int)($y_i / 2 - $y_m / 2);
146                                                        break;
147                                                case 'top':
148                                                default:
149                                                        $watermark_y = $watermarkmargin;
150                                        }
151
152                                        // Calcule du positionnement horizontal de l'icone copyright
153                                        switch($watermarkalignh){
154                                                case 'right':
155                                                        $watermark_x = $x_i - $x_m - $watermarkmargin;
156                                                        break;
157                                                case 'center':
158                                                        $watermark_x = (int)($x_i / 2 - $x_m / 2);
159                                                        break;
160                                                case 'left':
161                                                default:
162                                                        $watermark_x = $watermarkmargin;
163                                        }
164                                }
165
166                                imagecopymerge($im,$im1, $watermark_x, $watermark_y, 0, 0, $x_m, $y_m, $watermarkopacity);
167                                imagedestroy($im1);
168                                break;
169                        case 'text':
170                                $color = $watermarkcolor;
171                                $red = hexdec(substr($color, 0, 2));
172                                $green = hexdec(substr($color, 2, 2));
173                                $blue = hexdec(substr($color, 4, 2));
174                                $text_color = imagecolorallocate($im, $red, $green, $blue);
175                                $shadow_color = imagecolorallocate($im, 0, 0, 0);
176                                $text_height = imagefontheight($watermarkfont);
177                                $text_width = strlen($watermarktext) * imagefontwidth($watermarkfont);
178
179                                // Calcule du positionnement vertical du texte de copyright
180                                switch ($watermarkalignv){
181                                        case 'bottom':
182                                                $watermark_y = $y_i - $text_height - $watermarkmargin;
183                                                break;
184                                        case 'center':
185                                                $watermark_y = (int)($y_i / 2 - $text_height / 2);
186                                                break;
187                                        case 'top':
188                                        default:
189                                                $watermark_y = $watermarkmargin;
190                                }
191
192                                // Calcule du positionnement horizontal du texte de copyright
193                                switch($watermarkalignh){
194                                        case 'right':
195                                                $watermark_x = $x_i - $text_width - $watermarkmargin;
196                                                break;
197                                        case 'center':
198                                                $watermark_x = (int)($x_i / 2 - $text_width / 2);
199                                                break;
200                                        case 'left':
201                                        default:
202                                                $watermark_x = $watermarkmargin;
203                                }
204
205                                if ($watermarkshadow == 'yes') {
206                                        imagestring($im, $watermarkfont, $watermark_x + 1, $watermark_y + 1, $watermarktext, $shadow_color);
207                                }
208                                imagestring($im, $watermarkfont, $watermark_x, $watermark_y, $watermarktext, $text_color);
209
210                                $image["fonction_image"]($im, "$dest");
211                                imagedestroy($im);
212                                break;
213                        case 'none':
214                        default:
215                }
216        }
217
218        $x_dest = largeur($dest);
219        $y_dest = hauteur($dest);
220
221        return image_ecrire_tag($image,array('src'=>$dest,'width'=>$x_dest,'height'=>$y_dest));
222}
223
224?>
Note: See TracBrowser for help on using the repository browser.