source: spip-zone/_plugins_/credits2filigrane/c2f_pipelines.php @ 61118

Last change on this file since 61118 was 61118, checked in by cy_altern@…, 9 years ago

depot initial du plugin "Credits en filigrane"

File size: 3.9 KB
Line 
1<?php
2/**
3 * Plugin Credits en filigrane
4 * Licence GPL3 (c) 2012 cy_altern
5 *
6 */
7if (!defined("_ECRIRE_INC_VERSION")) return;
8
9/**
10 * appliquer un filigrane sur une image lorsqu'elle a le champ credits non-vide
11 * !!! NECESSITE la lib GD2 pour le traitement des images dans la conf SPIP avancée !!!
12 * les fichiers texte-du-filigrane_000000.png ou texte-du-filigrane_ffffff.png sont stockés dans le dossier IMG/filigranes
13 * parametres des fichiers png utilises comme masque: cf http://www.paris-beyrouth.org/tutoriaux-spip/article/un-site-dument-timbre
14 * les images originales sont déplacées dans IMG_sans_filigrane/ext
15 * la copie avec filigrane remplace l'originale de façon transparente pour l'utilisateur
16 *
17 */
18function c2f_post_edition($flux) {
19        if ($flux['args']['table'] != 'spip_documents'
20                OR !isset($flux['args']['id_objet'])
21                OR (intval($flux['args']['id_objet']) != $flux['args']['id_objet'])
22                OR !isset($flux['data']['credits'])
23                OR $flux['data']['credits']=='')
24                return;
25
26        // recup les infos de l'image en particulier son nom de fichier
27        $id_doc = $flux['args']['id_objet'];
28        $res = sql_fetsel("*", "spip_documents", "id_document=$id_doc");
29        if (!in_array($res['extension'], array('jpg', 'gif', 'png')))
30                return;
31        $fichier = $res['fichier'];
32
33        // si l'image existe dans IMG_sans_filigrane c'est cette version qu'il faut utiliser: ecraser l'ancienne image filigranée
34        // sinon c'est que celle de IMG n'est pas filigranée donc on l'utilise après l'avoir copiée dans IMG_sans_filigrane
35        $rep_sans_filigrane = str_replace('IMG', 'IMG_sans_filigrane', _DIR_IMG);
36        if (!is_dir($rep_sans_filigrane)) {
37                sous_repertoire($rep_sans_filigrane,'',false,true);
38                foreach(array('jpg','gif','png') as $f)
39                        sous_repertoire($rep_sans_filigrane.'/'.$f,'',false,true);
40        }
41       
42        if (@file_exists($rep_sans_filigrane.$fichier))
43                @copy($rep_sans_filigrane.$fichier, _DIR_IMG.$fichier);
44        else 
45                @copy(_DIR_IMG.$fichier, $rep_sans_filigrane.$fichier);
46        $fichier = _DIR_IMG.$fichier;
47
48        // le petit nécessaire pour générer le masque et l'appliquer
49        include_spip('filtres/couleurs');
50        include_spip('filtres/images_transforme');
51        include_spip('filtres/images_typo');
52        include_spip('filtres/charsets');
53
54        // faut il un masque avec filigrane noir ou blanc? (masque bla_000000.png ou bla_ffffff.png)
55        $coul_txt = couleur_inverser( couleur_extreme( couleur_extraire($fichier, 19,19)));
56
57        // si elle n'existe pas déja, générer l'image typo du filigrane et la stocker dans le dossier IMG/filigranes
58        $credits = $flux['data']['credits'];
59        $nomfic_credits = substr(str_replace(' ', '_', translitteration($credits)), 0, 100);
60        $masque = 'filigranes/'.$nomfic_credits.'_'.$coul_txt.'.png';
61       
62        if (!find_in_path($masque)){
63                $img_typo = produire_image_typo('© '.$credits, 'taille=20', 'couleur='.$coul_txt, 'padding_horizontal=10', 'padding_vertital=5');
64                $img_typo = extraire_attribut(image_aplatir($img_typo, 'png', '808080',128,0), 'src');
65
66                if (!is_dir(_DIR_IMG.'filigranes')){
67                        include_spip('inc/getdocument');
68                        creer_repertoire_documents('filigranes');
69                }
70                @rename($img_typo, _DIR_IMG.$masque);
71                $masque = _DIR_IMG.$masque;
72        }
73//spip_log('fip masque: '.find_in_path($masque), 'c2f');
74
75        // appliquer le filigrane et generer un fichier jpg ou gif a partir du PNG obtenu
76        switch ($res['extension']) {
77                case 'jpg':
78                        $fic_res = extraire_attribut(image_aplatir(image_masque($fichier, $masque, "bottom=0", "right=0"),'jpg','ffffff',128,1), 'src');
79                break;
80                case 'gif':
81                        $fic_res = extraire_attribut(image_aplatir(image_masque($fichier, $masque, "bottom=0", "right=0"),'gif','ffffff',128,1), 'src');
82                break;
83                case 'png':
84                        $fic_res = extraire_attribut(image_masque($fichier, $masque, "bottom=0", "right=0"), 'src');
85                break;
86        }
87
88        if (@file_exists($fic_res)) {
89                @spip_unlink($fichier); // necessaire avant le rename si OS windows
90                @rename($fic_res, $fichier);
91        }
92       
93        return $flux;
94}
95
96?>
Note: See TracBrowser for help on using the repository browser.