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

Last change on this file was 109076, checked in by peetdu@…, 5 months ago

New logo + slogan + description + sécurité + PSR

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