source: spip-zone/_core_/plugins/filtres_images/filtres/images_typo.php @ 43404

Last change on this file since 43404 was 43404, checked in by cedric@…, 10 years ago

Les extensions avaient deja rate le passage en 2010, ne ratons pas celui a 2011

File size: 18.2 KB
Line 
1<?php
2/***************************************************************************\
3 *  SPIP, Systeme de publication pour l'internet                           *
4 *                                                                         *
5 *  Copyright (c) 2001-2011                                                *
6 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
7 *                                                                         *
8 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
9 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
10\***************************************************************************/
11
12// librairie de base du core
13include_spip('inc/filtres_images_mini');
14
15
16// Image typographique
17// Fonctions pour l'arabe
18
19// http://doc.spip.org/@rtl_mb_ord
20function rtl_mb_ord($char){
21
22        if (($c = ord($char)) < 216) return $c;
23        else return 256 * rtl_mb_ord(substr($char, 0, -1)) + ord(substr($char, -1));
24
25        /*      return (strlen($char) < 2) ?
26                        ord($char) : 256 * mb_ord(substr($char, 0, -1))
27                                + ord(substr($char, -1));
28                               
29        */                     
30}
31
32
33// http://doc.spip.org/@rtl_reverse
34function rtl_reverse($mot, $rtl_global) {
35        $rtl_prec = $rtl_global;
36
37        $ponctuations = array("/", "-", "«","»", "“", "”", ",", ".", " ", ":", ";", "(", ")", "،", "؟", "?", "!", " ");
38        foreach($ponctuations as $ponct) {
39                $ponctuation[$ponct] = true;
40        }
41
42               
43
44        for ($i = 0; $i < spip_strlen($mot); $i++) {
45                $lettre = spip_substr($mot, $i, 1);
46               
47                $code = rtl_mb_ord($lettre);
48                # echo "<li>$lettre - $code";
49
50                if (($code >= 54928 && $code <= 56767) ||  ($code >= 15707294 && $code <= 15711164)) {
51                        $rtl = true;
52                }
53                else $rtl = false;
54               
55                if ($lettre == "٠" || $lettre == "١" || $lettre == "٢" || $lettre == "٣" || $lettre == "٤" || $lettre == "٥"
56                                 || $lettre == "٦" || $lettre == "٧" || $lettre == "٨" || $lettre == "٩") $rtl = false;
57               
58                if ($ponctuation[$lettre]) {
59                        # le truc mega casse-gueule de l'inversion unicode:
60                        # traiter le sens de placement en fonction de la lettre precedente
61                        # (et non automatiquement le rtl_global)
62                        $rtl = $rtl_prec;
63                       
64                        if ($rtl) {
65                                switch ($lettre) {
66                                        case "(": $lettre = ")"; break;
67                                        case ")": $lettre = "("; break;
68                                        case "«": $lettre = "»"; break;
69                                        case "»": $lettre = "«"; break;
70                                        case "“": $lettre = "”"; break;
71                                        case "”": $lettre = "“"; break;
72                                }
73                        }
74                }
75               
76               
77                if ($rtl) $res = $lettre.$res;
78                else $res = $res.$lettre;
79               
80                $rtl_prec = $rtl;
81               
82        }
83        return $res;
84}
85
86
87
88// http://doc.spip.org/@rtl_visuel
89function rtl_visuel($texte, $rtl_global) {
90        // hebreu + arabe: 54928 => 56767
91        // hebreu + presentation A: 15707294 => 15710140
92        // arabe presentation: 15708336 => 15711164
93       
94        #       echo hexdec("efb7bc");
95
96        // premiere passe pour determiner s'il y a du rtl
97        // de facon a placer ponctuation et mettre les mots dans l'ordre
98
99
100        $arabic_letters = array(
101                array("ي", // lettre 0
102                        "ﻱ",  // isolee 1
103                        "ﻳ", // debut 2
104                        "ﻴ", // milieu 3
105                        "ﻲ"),
106                array("ب", // lettre 0
107                        "ﺏ",  // isolee 1
108                        "ﺑ", // debut 2
109                        "ﺒ", // milieu 3
110                        "ﺐ"),
111                array("ا", // lettre 0
112                        "ا",  // isolee 1
113                        "ﺍ", // debut 2
114                        "ﺍ", // milieu 3
115                        "ﺎ"),
116                array("إ", // lettre 0
117                        "إ",  // isolee 1
118                        "إ", // debut 2
119                        "ﺈ", // milieu 3
120                        "ﺈ"),
121                array("ل", // lettre 0
122                        "ﻝ",  // isolee 1
123                        "ﻟ", // debut 2
124                        "ﻠ", // milieu 3
125                        "ﻞ"),
126                array("خ", // lettre 0
127                        "ﺥ",  // isolee 1
128                        "ﺧ", // debut 2
129                        "ﺨ", // milieu 3
130                        "ﺦ"),
131                array("ج", // lettre 0
132                        "ﺝ",  // isolee 1
133                        "ﺟ", // debut 2
134                        "ﺠ", // milieu 3
135                        "ﺞ"),
136                array("س", // lettre 0
137                        "ﺱ",  // isolee 1
138                        "ﺳ", // debut 2
139                        "ﺴ", // milieu 3
140                        "ﺲ"),
141                array("ن", // lettre 0
142                        "ﻥ",  // isolee 1
143                        "ﻧ", // debut 2
144                        "ﻨ", // milieu 3
145                        "ﻦ"),
146                array("ش", // lettre 0
147                        "ﺵ",  // isolee 1
148                        "ﺷ", // debut 2
149                        "ﺸ", // milieu 3
150                        "ﺶ"),
151                array("ق", // lettre 0
152                        "ﻕ",  // isolee 1
153                        "ﻗ", // debut 2
154                        "ﻘ", // milieu 3
155                        "ﻖ"),
156                array("ح", // lettre 0
157                        "ﺡ",  // isolee 1
158                        "ﺣ", // debut 2
159                        "ﺤ", // milieu 3
160                        "ﺢ"),
161                array("م", // lettre 0
162                        "ﻡ",  // isolee 1
163                        "ﻣ", // debut 2
164                        "ﻤ", // milieu 3
165                        "ﻢ"),
166                array("ر", // lettre 0
167                        "ر",  // isolee 1
168                        "ﺭ", // debut 2
169                        "ﺮ", // milieu 3
170                        "ﺮ"),
171                array("ع", // lettre 0
172                        "ع",  // isolee 1
173                        "ﻋ", // debut 2
174                        "ﻌ", // milieu 3
175                        "ﻊ"),
176                array("و", // lettre 0
177                        "و",  // isolee 1
178                        "ﻭ", // debut 2
179                        "ﻮ", // milieu 3
180                        "ﻮ"),
181                array("ة", // lettre 0
182                        "ة",  // isolee 1
183                        "ة", // debut 2
184                        "ﺔ", // milieu 3
185                        "ﺔ"),
186                array("ف", // lettre 0
187                        "ﻑ",  // isolee 1
188                        "ﻓ", // debut 2
189                        "ﻔ", // milieu 3
190                        "ﻒ"),
191                array("ﻻ", // lettre 0
192                        "ﻻ",  // isolee 1
193                        "ﻻ", // debut 2
194                        "ﻼ", // milieu 3
195                        "ﻼ"),
196                array("ح", // lettre 0
197                        "ﺡ",  // isolee 1
198                        "ﺣ", // debut 2
199                        "ﺤ", // milieu 3
200                        "ﺢ"),
201                array("ت", // lettre 0
202                        "ﺕ",  // isolee 1
203                        "ﺗ", // debut 2
204                        "ﺘ", // milieu 3
205                        "ﺖ"),
206                array("ض", // lettre 0
207                        "ﺽ",  // isolee 1
208                        "ﺿ", // debut 2
209                        "ﻀ", // milieu 3
210                        "ﺾ"),
211                array("ك", // lettre 0
212                        "ك",  // isolee 1
213                        "ﻛ", // debut 2
214                        "ﻜ", // milieu 3
215                        "ﻚ"),
216                array("ه", // lettre 0
217                        "ﻩ",  // isolee 1
218                        "ﻫ", // debut 2
219                        "ﻬ", // milieu 3
220                        "ﻪ"),
221                array("ي", // lettre 0
222                        "ي",  // isolee 1
223                        "ﻳ", // debut 2
224                        "ﻴ", // milieu 3
225                        "ﻲ"),
226                array("ئ", // lettre 0
227                        "ﺉ",  // isolee 1
228                        "ﺋ", // debut 2
229                        "ﺌ", // milieu 3
230                        "ﺊ"),
231                array("ص", // lettre 0
232                        "ﺹ",  // isolee 1
233                        "ﺻ", // debut 2
234                        "ﺼ", // milieu 3
235                        "ﺺ"),
236                array("ث", // lettre 0
237                        "ﺙ",  // isolee 1
238                        "ﺛ", // debut 2
239                        "ﺜ", // milieu 3
240                        "ﺚ"),
241                array("ﻷ", // lettre 0
242                        "ﻷ",  // isolee 1
243                        "ﻷ", // debut 2
244                        "ﻸ", // milieu 3
245                        "ﻸ"),
246                array("د", // lettre 0
247                        "ﺩ",  // isolee 1
248                        "ﺩ", // debut 2
249                        "ﺪ", // milieu 3
250                        "ﺪ"),
251                array("ذ", // lettre 0
252                        "ﺫ",  // isolee 1
253                        "ﺫ", // debut 2
254                        "ﺬ", // milieu 3
255                        "ﺬ"),
256                array("ط", // lettre 0
257                        "ﻁ",  // isolee 1
258                        "ﻃ", // debut 2
259                        "ﻄ", // milieu 3
260                        "ﻂ"),
261                array("آ", // lettre 0
262                        "آ",  // isolee 1
263                        "آ", // debut 2
264                        "ﺂ", // milieu 3
265                        "ﺂ"),
266                array("أ", // lettre 0
267                        "أ",  // isolee 1
268                        "أ", // debut 2
269                        "ﺄ", // milieu 3
270                        "ﺄ"),
271                array("ؤ", // lettre 0
272                        "ؤ",  // isolee 1
273                        "ؤ", // debut 2
274                        "ﺆ", // milieu 3
275                        "ﺆ"),
276                array("ز", // lettre 0
277                        "ز",  // isolee 1
278                        "ز", // debut 2
279                        "ﺰ", // milieu 3
280                        "ﺰ"),
281                array("ظ", // lettre 0
282                        "ظ",  // isolee 1
283                        "ﻇ", // debut 2
284                        "ﻈ", // milieu 3
285                        "ﻆ"),
286                array("غ", // lettre 0
287                        "غ",  // isolee 1
288                        "ﻏ", // debut 2
289                        "ﻐ", // milieu 3
290                        "ﻎ"),
291                array("ى", // lettre 0
292                        "ى",  // isolee 1
293                        "ﯨ", // debut 2
294                        "ﯩ", // milieu 3
295                        "ﻰ"),
296                array("پ", // lettre 0
297                        "پ",  // isolee 1
298                        "ﭘ", // debut 2
299                        "ﭙ", // milieu 3
300                        "ﭗ"),
301                array("چ", // lettre 0
302                        "چ",  // isolee 1
303                        "ﭼ", // debut 2
304                        "ﭽ", // milieu 3
305                        "ﭻ")
306        );
307       
308        if(init_mb_string() AND mb_regex_encoding() !== "UTF-8") echo "Attention: dans php.ini, il faut indiquer:<br /><strong>mbstring.internal_encoding = UTF-8</strong>";
309       
310       
311        $texte = explode(" ", $texte);
312       
313        foreach ($texte as $mot) {
314                $res = "";
315
316                // Inserer des indicateurs de debut/fin
317                $mot = "^".$mot."^";
318
319                $mot = preg_replace(",&nbsp;,u", " ", $mot);
320                $mot = preg_replace(",&#171;,u", "«", $mot);
321                $mot = preg_replace(",&#187;,u", "»", $mot);
322
323                // ponctuations
324                $ponctuations = array("/", "-", "«","»", "“", "”", ",", ".", " ", ":", ";", "(", ")", "،", "؟", "?", "!"," ");
325                foreach($ponctuations as $ponct) {
326                        $mot = str_replace("$ponct", "^$ponct^", $mot);
327                }
328
329                // lettres forcant coupure
330                $mot = preg_replace(",ا,u", "ا^", $mot);
331                $mot = preg_replace(",د,u", "د^", $mot);
332                $mot = preg_replace(",أ,u", "أ^", $mot);
333                $mot = preg_replace(",إ,u", "إ^", $mot);
334                $mot = preg_replace(",أ,u", "أ^", $mot);
335                $mot = preg_replace(",ر,u", "ر^", $mot);
336                $mot = preg_replace(",ذ,u", "ذ^", $mot);
337                $mot = preg_replace(",ز,u", "ز^", $mot);
338                $mot = preg_replace(",و,u", "و^", $mot);
339                $mot = preg_replace(",و,u", "و^", $mot);
340                $mot = preg_replace(",ؤ,u", "ؤ^", $mot);
341                $mot = preg_replace(",ة,u", "ة^", $mot);
342                //              $mot = preg_replace(",ل,u", "^ل", $mot);
343                //              $mot = preg_replace(",,", "^", $mot);
344
345
346                $mot = preg_replace(",٠,u", "^٠^", $mot);
347                $mot = preg_replace(",١,u", "^١^", $mot);
348                $mot = preg_replace(",٢,u", "^٢^", $mot);
349                $mot = preg_replace(",٣,u", "^٣^", $mot);
350                $mot = preg_replace(",٤,u", "^٤^", $mot);
351                $mot = preg_replace(",٥,u", "^٥^", $mot);
352                $mot = preg_replace(",٦,u", "^٦^", $mot);
353                $mot = preg_replace(",٧,u", "^٧^", $mot);
354                $mot = preg_replace(",٨,u", "^٨^", $mot);
355                $mot = preg_replace(",٩,u", "^٩^", $mot);
356
357
358                // Ligatures
359                $mot = preg_replace(",لا,u", "ﻻ", $mot);
360                $mot = preg_replace(",لأ,u", "ﻷ", $mot);
361               
362               
363                foreach ($arabic_letters as $a_l) {
364                        $mot = preg_replace(",([^\^])".$a_l[0]."([^\^]),u", "\\1".$a_l[3]."\\2", $mot);
365                        $mot = preg_replace(",\^".$a_l[0]."([^\^]),u", "^".$a_l[2]."\\1", $mot);
366                        $mot = preg_replace(",([^\^])".$a_l[0]."\^,u", "\\1".$a_l[4]."^", $mot);
367                        // il semble qu'il ne soit pas necessaire de remplacer
368                        // la lettre isolee
369                        //                      $mot = preg_replace(",\^".$a_l[0]."\^,u", "^".$a_l[1]."^", $mot);
370                }
371               
372                                $mot = preg_replace(",\^,u", "", $mot);
373               
374                $res = $mot;
375                $res = rtl_reverse($mot, $rtl_global);
376
377                /*
378                $rtl = false;           
379                for ($i = 0; $i < spip_strlen($mot); $i++) {
380                        $lettre = spip_substr($mot, $i, 1);
381                        $code = rtl_mb_ord($lettre);
382                        if (($code >= 54928 && $code <= 56767) ||  ($code >= 15708336 && $code <= 15711164)) $rtl = true;
383                }
384                */
385               
386               
387                if ($rtl_global) $retour = $res . " " . $retour;
388                else $retour = $retour. " ".$res;
389        }
390       
391       
392        return $retour;
393}
394
395
396// http://doc.spip.org/@printWordWrapped
397function printWordWrapped($image, $top, $left, $maxWidth, $font, $couleur, $text, $textSize, $align="left", $hauteur_ligne = 0) {
398        static $memps = array();
399
400        // imageftbbox exige un float, et settype aime le double pour php < 4.2.0
401        settype($textSize, 'double');
402
403        // calculer les couleurs ici, car fonctionnement different selon TTF ou PS
404        $black = imagecolorallocatealpha($image, hexdec("0x{".substr($couleur, 0,2)."}"), hexdec("0x{".substr($couleur, 2,2)."}"), hexdec("0x{".substr($couleur, 4,2)."}"), 0);
405        $grey2 = imagecolorallocatealpha($image, hexdec("0x{".substr($couleur, 0,2)."}"), hexdec("0x{".substr($couleur, 2,2)."}"), hexdec("0x{".substr($couleur, 4,2)."}"), 127);
406
407        // Gaffe, T1Lib ne fonctionne carrement pas bien des qu'on sort de ASCII
408        // C'est dommage, parce que la rasterisation des caracteres est autrement plus jolie qu'avec TTF.
409        // A garder sous le coude en attendant que ca ne soit plus une grosse bouse.
410        // Si police Postscript et que fonction existe...
411        if (
412        false AND
413        strtolower(substr($font,-4)) == ".pfb"
414        AND function_exists("imagepstext")) {
415                // Traitement specifique pour polices PostScript (experimental)
416                $textSizePs = round(1.32 * $textSize);
417                if (!$fontps = $memps["$font"]) {
418                        $fontps = imagepsloadfont($font);
419                        // Est-ce qu'il faut reencoder? Pas testable proprement, alors...
420                        // imagepsencodefont($fontps,find_in_path('polices/standard.enc'));
421                        $memps["$font"] = $fontps;
422                }
423        }
424
425        $rtl_global = false;
426        for ($i = 0; $i < spip_strlen($text); $i++) {
427                $lettre = spip_substr($text, $i, 1);
428                $code = rtl_mb_ord($lettre);
429                if (($code >= 54928 && $code <= 56767) ||  ($code >= 15707294 && $code <= 15711164)) {
430                        $rtl_global = true;
431                }
432        }
433
434
435        // split the text into an array of single words
436        $words = explode(' ', $text);
437
438        // les espaces
439        foreach($words as $k=>$v)
440                $words[$k] = str_replace(array('~'), array(' '), $v);
441
442
443        if ($hauteur_ligne == 0) $lineHeight = floor($textSize * 1.3);
444        else $lineHeight = $hauteur_ligne;
445
446        $dimensions_espace = imageftbbox($textSize, 0, $font, ' ', array());
447        if ($dimensions_espace[2] < 0)
448                $dimensions_espace = imageftbbox($textSize, 0, $font, $line, array());
449        $largeur_espace = $dimensions_espace[2] - $dimensions_espace[0];
450        $retour["espace"] = $largeur_espace;
451
452
453        $line = '';
454        while (count($words) > 0) {
455               
456                $mot = $words[0];
457               
458                if ($rtl_global) $mot = rtl_visuel($mot,$rtl_global);
459       
460                $dimensions = imageftbbox($textSize, 0, $font, $line.' '.$mot, array());
461                $lineWidth = $dimensions[2] - $dimensions[0]; // get the length of this line, if the word is to be included
462                if ($lineWidth > $maxWidth) { // if this makes the text wider that anticipated
463                        $lines[] = $line; // add the line to the others
464                        $line = ''; // empty it (the word will be added outside the loop)
465                }
466                $line .= ' '.$words[0]; // add the word to the current sentence
467                $words = array_slice($words, 1); // remove the word from the array
468        }
469        if ($line != '') { $lines[] = $line; } // add the last line to the others, if it isn't empty
470        $height = count($lines) * $lineHeight; // the height of all the lines total
471        // do the actual printing
472        $i = 0;
473
474        // Deux passes pour recuperer, d'abord, largeur_ligne
475        // necessaire pour alignement right et center
476        foreach ($lines as $line) {
477                if ($rtl_global) $line = rtl_visuel($line, $rtl_global);
478               
479                $dimensions = imageftbbox($textSize, 0, $font, $line, array());
480                $largeur_ligne = $dimensions[2] - $dimensions[0];
481                if ($largeur_ligne > $largeur_max) $largeur_max = $largeur_ligne;
482        }
483
484        foreach ($lines as $i => $line) {
485                if ($rtl_global) $line = rtl_visuel($line, $rtl_global);
486
487                $dimensions = imageftbbox($textSize, 0, $font, $line, array());
488                $largeur_ligne = $dimensions[2] - $dimensions[0];
489                if ($align == "right") $left_pos = $largeur_max - $largeur_ligne;
490                else if ($align == "center") $left_pos = floor(($largeur_max - $largeur_ligne)/2);
491                else $left_pos = 0;
492               
493               
494                if ($fontps) {
495                        $line = trim($line);
496                        imagepstext ($image, "$line", $fontps, $textSizePs, $black, $grey2, $left + $left_pos, $top + $lineHeight * $i, 0, 0, 0, 16);
497                }
498                else imagefttext($image, $textSize, 0, $left + $left_pos, $top + $lineHeight * $i, $black, $font, trim($line), array());
499        }
500        $retour["height"] = $height;# + round(0.3 * $hauteur_ligne);
501        $retour["width"] = $largeur_max;
502                 
503        return $retour;
504}
505
506//array imagefttext ( resource image, float size, float angle, int x, int y, int col, string font_file, string text [, array extrainfo] )
507//array imagettftext ( resource image, float size, float angle, int x, int y, int color, string fontfile, string text )
508
509// http://doc.spip.org/@produire_image_typo
510function produire_image_typo() {
511        /*
512        arguments autorises:
513       
514        $texte : le texte a transformer; attention: c'est toujours le premier argument, et c'est automatique dans les filtres
515        $couleur : la couleur du texte dans l'image - pas de dieze
516        $police: nom du fichier de la police (inclure terminaison)
517        $largeur: la largeur maximale de l'image ; attention, l'image retournee a une largeur inferieure, selon les limites reelles du texte
518        $hauteur_ligne: la hauteur de chaque ligne de texte si texte sur plusieurs lignes
519        (equivalent a "line-height")
520        $padding: forcer de l'espace autour du placement du texte; necessaire pour polices a la con qui "depassent" beaucoup de leur boite
521        $align: alignement left, right, center
522        */
523
524
525
526        // Recuperer les differents arguments
527        $numargs = func_num_args();
528        $arg_list = func_get_args();
529        $texte = $arg_list[0];
530        for ($i = 1; $i < $numargs; $i++) {
531                if (($p = strpos($arg_list[$i], "="))!==FALSE) {
532                        $nom_variable = substr($arg_list[$i], 0, $p);
533                        $val_variable = substr($arg_list[$i], $p+1);
534               
535                        $variable["$nom_variable"] = $val_variable;
536                }
537               
538        }
539
540        // Construire requete et nom fichier
541        $text = str_replace("&nbsp;", "~", $texte);     
542        $text = preg_replace(",(\r|\n)+,ms", " ", $text);
543        include_spip('inc/charsets');
544        $text = html2unicode(strip_tags($text));
545        if (strlen($text) == 0) return "";
546
547        $taille = $variable["taille"];
548        if ($taille < 1) $taille = 16;
549
550        $couleur = couleur_html_to_hex($variable["couleur"]);
551        if (strlen($couleur) < 6) $couleur = "000000";
552
553        $alt = $texte;
554               
555        $align = $variable["align"];
556        if (!$variable["align"]) $align="left";
557         
558        $police = $variable["police"];
559        if (strlen($police) < 2) $police = "dustismo.ttf";
560
561        $largeur = $variable["largeur"];
562        if ($largeur < 5) $largeur = 600;
563
564        if ($variable["hauteur_ligne"] > 0) $hauteur_ligne = $variable["hauteur_ligne"];
565        else $hauteur_ligne = 0;
566        if ($variable["padding"] > 0) $padding = $variable["padding"];
567        else $padding = 0;
568       
569
570
571        $string = "$text-$taille-$couleur-$align-$police-$largeur-$hauteur_ligne-$padding";
572        $query = md5($string);
573        $dossier = sous_repertoire(_DIR_VAR, 'cache-texte');
574        $fichier = "$dossier$query.png";
575
576        $flag_gd_typo = function_exists("imageftbbox")
577                && function_exists('imageCreateTrueColor');
578
579       
580        if (@file_exists($fichier))
581                $image = $fichier;
582        else if (!$flag_gd_typo)
583                return $texte;
584        else {
585                $font = find_in_path('polices/'.$police);
586                if (!$font) {
587                        spip_log(_T('fichier_introuvable', array('fichier' => $police)));
588                        $font = find_in_path('polices/'."dustismo.ttf");
589                }
590
591                $imgbidon = imageCreateTrueColor($largeur, 45);
592                $retour = printWordWrapped($imgbidon, $taille+5, 0, $largeur, $font, $couleur, $text, $taille, 'left', $hauteur_ligne);
593                $hauteur = $retour["height"];
594                $largeur_reelle = $retour["width"];
595                $espace = $retour["espace"];
596                imagedestroy($imgbidon);
597
598                $im = imageCreateTrueColor($largeur_reelle-$espace+(2*$padding), $hauteur+5+(2*$padding));
599                imagealphablending ($im, FALSE );
600                imagesavealpha ( $im, TRUE );
601               
602                // Creation de quelques couleurs
603               
604                $grey2 = imagecolorallocatealpha($im, hexdec("0x{".substr($couleur, 0,2)."}"), hexdec("0x{".substr($couleur, 2,2)."}"), hexdec("0x{".substr($couleur, 4,2)."}"), 127);
605                ImageFilledRectangle ($im,0,0,$largeur_reelle+(2*$padding),$hauteur+5+(2*$padding),$grey2);
606               
607                // Le texte a dessiner
608                printWordWrapped($im, $taille+5+$padding, $padding, $largeur, $font, $couleur, $text, $taille, $align, $hauteur_ligne);
609               
610               
611                // Utiliser imagepng() donnera un texte plus claire,
612                // compare a l'utilisation de la fonction imagejpeg()
613                _image_gd_output($im,array('fichier_dest'=>$fichier,'format_dest'=>'png'));
614                imagedestroy($im);
615               
616                $image = $fichier;
617        }
618
619
620        $dimensions = getimagesize($image);
621        $largeur = $dimensions[0];
622        $hauteur = $dimensions[1];
623       
624        return inserer_attribut("<img src='$image' width='$largeur' height='$hauteur' style='width:".$largeur."px;height:".$hauteur."px;' />", 'alt', $alt);
625}
626
627
628?>
Note: See TracBrowser for help on using the repository browser.