source: spip-zone/_plugins_/medias_responsive_mod/medias_responsive_mod_fonctions.php

Last change on this file was 119114, checked in by arno@…, 7 months ago

Éviter alerte sur _SPIP_DOC_INTITULES_ALIGN

File size: 3.4 KB
Line 
1<?php
2
3if (!defined('_ECRIRE_INC_VERSION')) {
4        return;
5}
6
7if (!function_exists('centre_image_x')) {
8        function centre_image_x($img) { return 0.5; }
9        function centre_image_y($img) { return 0.5; }
10}
11
12if (!defined("_SPIP_DOC_INTITULES_ALIGN")) define("_SPIP_DOC_INTITULES_ALIGN", "top");
13
14// Fabrique une image avec couche alpha
15// en fonction du détourage de l'image
16function image_detourer_alpha($im) {
17        include_spip("inc/filtres_images");
18
19        $fonction = array('image_alpha', func_get_args());
20        $image = _image_valeurs_trans($im, "detourer_alpha", "png", $fonction);
21        if (!$image) return("");
22       
23        $x_i = $image["largeur"];
24        $y_i = $image["hauteur"];
25       
26        $im = $image["fichier"];
27        $dest = $image["fichier_dest"];
28       
29        $creer = $image["creer"];
30       
31       
32        if ($creer) {
33                // Creation de l'image en deux temps
34                // de facon a conserver les GIF transparents
35                $im = $image["fonction_imagecreatefrom"]($im);
36                imagepalettetotruecolor($im);
37                imagealphablending($im, false);
38                imagesavealpha($im, true);
39
40                imagefilter($im, IMG_FILTER_EMBOSS);
41                imagefilter($im, IMG_FILTER_GRAYSCALE);
42                imagefilter($im, IMG_FILTER_GAUSSIAN_BLUR);
43               
44                $col_pleine = imageColorAllocateAlpha($im, 0, 0, 0, 0);
45                $col_vide = imageColorAllocateAlpha($im, 0, 0, 0, 127);
46               
47                for ($x = 0; $x < $x_i; $x++) {
48                        for ($y = 0; $y < $y_i; $y++) {
49                                $rgb=imagecolorat($im,$x,$y);
50                                $b = $rgb & 0xFF;
51                                                                 
52                                 
53                                 if (abs($b - 127) < 10) imagesetpixel($im, $x, $y, $col_vide);
54                                 else  imagesetpixel($im, $x, $y, $col_pleine);
55                        }
56                }       
57
58                _image_gd_output($im,$image);
59                imagedestroy($im);
60        }
61       
62
63        return _image_ecrire_tag($image,array('src'=>$dest));
64       
65}
66
67
68// Fabrique une image avec couche alpha
69// en fonction du détourage de l'image
70function image_detourer_polygon($im) {
71        include_spip("inc/filtres_images");
72
73        $fonction = array('image_detourer_polygon', func_get_args());
74        $image = _image_valeurs_trans($im, "detourer_polygon", "txt", $fonction);
75        if (!$image) return("");
76               
77        $x_i = $image["largeur"];
78        $y_i = $image["hauteur"];
79       
80        $im = $image["fichier"];
81        $dest = $image["fichier_dest"];
82       
83        $creer = $image["creer"];
84       
85       
86        if ($creer) {
87                // Creation de l'image en deux temps
88                // de facon a conserver les GIF transparents
89                $im = $image["fonction_imagecreatefrom"]($im);
90                imagepalettetotruecolor($im);
91                imagealphablending($im, false);
92                imagesavealpha($im, true);
93
94                imagefilter($im, IMG_FILTER_EMBOSS);
95                imagefilter($im, IMG_FILTER_GRAYSCALE);
96                imagefilter($im, IMG_FILTER_CONTRAST, -100);
97                imagefilter($im, IMG_FILTER_CONTRAST, -100);
98
99                $im2 = imagecreatetruecolor(100, 100);
100                imagecopyresampled($im2, $im, 0, 0, 0, 0, 100, 100, $x_i, $y_i);
101
102                $couples = array();
103
104                $rgb = imagecolorat($im2, 0, 0);
105                $b_ref = $rgb & 0xFF;
106
107                for ($y = 0; $y < 100; $y++) {
108                        $boucle = true;
109                        for ($x = 0; $x < 100 && $boucle; $x++) {
110                                $rgb = imagecolorat($im2,$x,$y);
111                                $b = $rgb & 0xFF;
112                                if (abs($b - $b_ref) > 20) {
113                                        $couples [] = "$x% $y%";
114                                        $boucle = false;
115                                }
116                        }
117                }
118       
119                $rgb = imagecolorat($im2, 99, 99);
120                $b_ref = $rgb & 0xFF;
121
122               
123                for ($y = 99; $y >= 0; $y--) {
124                        $boucle = true;
125                        for ($x = 100; $x > 0 && $boucle; $x--) {
126                                $rgb = imagecolorat($im2,$x-1,$y);
127                                $b = $rgb & 0xFF;
128                                if (abs($b - $b_ref) > 20) {
129                                        $couples [] = "$x% $y%";
130                                        $boucle = false;
131                                }
132                        }
133                }
134               
135                $couples = "polygon(".join($couples, ",").")";
136               
137                imagedestroy($im2);
138                ecrire_fichier($dest, $couples);
139        }
140       
141        $ret = "";
142        lire_fichier($dest, $ret);
143
144        return $ret;
145       
146}
Note: See TracBrowser for help on using the repository browser.