Changeset 115811 in spip-zone


Ignore:
Timestamp:
Jun 27, 2019, 4:44:29 PM (8 weeks ago)
Author:
cedric@…
Message:

|couleur_extraire{moyenne} donne une couleur moyenne de l'image et non extraite en un point, qui est parfois plus interessante

Location:
_core_/plugins/filtres_images
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _core_/plugins/filtres_images/filtres/images_lib.php

    r113294 r115811  
    291291// Par defaut, la couleur choisie se trouve un peu au-dessus du centre de l'image.
    292292// On peut forcer un point en fixant $x et $y, entre 0 et 20.
     293// si on passe 'moyenne' pour x alors une couleur moyenne est calculee sur les 20x20px
    293294// https://code.spip.net/@image_couleur_extraire
    294295
     
    334335                        imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
    335336
    336                         do {
    337                                 // get a color
    338                                 $color_index = imagecolorat($thumb, $x, $y);
    339 
    340                                 // make it human readable
    341                                 $color_tran = imagecolorsforindex($thumb, $color_index);
    342                                 $x++;
    343                                 $y++;
    344                         } while ($color_tran['alpha'] == 127 and $x < $newwidth and $y < $newheight);
    345 
    346                         $couleur = _couleur_dec_to_hex($color_tran["red"], $color_tran["green"], $color_tran["blue"]);
     337                        if ($x === 'moyenne') {
     338                                $moyenne = null;
     339                                $nb_points = 0;
     340                                for ($x=0;$x<$newwidth;$x++) {
     341                                        for ($y=0;$y<$newheight;$y++) {
     342                                                // get a color
     343                                                $color_index = imagecolorat($thumb, $x, $y);
     344                                                // make it human readable
     345                                                $color_tran = imagecolorsforindex($thumb, $color_index);
     346                                                if ($color_tran['alpha'] != 127) {
     347                                                        if (is_null($moyenne)) {
     348                                                                $moyenne = $color_tran;
     349                                                        }
     350                                                        else {
     351                                                                $moyenne['red'] += $color_tran['red'];
     352                                                                $moyenne['green'] += $color_tran['green'];
     353                                                                $moyenne['blue'] += $color_tran['blue'];
     354                                                        }
     355                                                        $nb_points++;
     356                                                }
     357                                        }
     358                                }
     359                                if (is_null($moyenne)) {
     360                                        $couleur = $defaut;
     361                                }
     362                                else {
     363                                        if ($nb_points > 1) {
     364                                                $moyenne['red'] = round($moyenne['red'] / $nb_points);
     365                                                $moyenne['green'] = round($moyenne['green'] / $nb_points);
     366                                                $moyenne['blue'] = round($moyenne['blue'] / $nb_points);
     367                                        }
     368
     369                                        $couleur = _couleur_dec_to_hex($moyenne["red"], $moyenne["green"], $moyenne["blue"]);
     370                                }
     371                        }
     372                        else {
     373                                do {
     374                                        // get a color
     375                                        $color_index = imagecolorat($thumb, $x, $y);
     376
     377                                        // make it human readable
     378                                        $color_tran = imagecolorsforindex($thumb, $color_index);
     379                                        $x++;
     380                                        $y++;
     381                                } while ($color_tran['alpha'] == 127 and $x < $newwidth and $y < $newheight);
     382
     383                                $couleur = _couleur_dec_to_hex($color_tran["red"], $color_tran["green"], $color_tran["blue"]);
     384                        }
    347385                } else {
    348386                        $couleur = $defaut;
  • _core_/plugins/filtres_images/paquet.xml

    r108781 r115811  
    22        prefix="images"
    33        categorie="multimedia"
    4         version="2.1.1"
     4        version="2.1.2"
    55        etat="stable"
    66        compatibilite="[3.3.0-dev;3.3.*]"
Note: See TracChangeset for help on using the changeset viewer.