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

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

annuler le filigrane d'une image: mettre 0 dans le champs credits

File size: 4.1 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        // pour restaurer l'image sans filigrane: mettre 0 dans le champ credits
49        $credits = $flux['data']['credits'];
50        if ($credits == '0')
51                return;
52
53        // le petit nécessaire pour générer le masque et l'appliquer
54        include_spip('filtres/couleurs');
55        include_spip('filtres/images_transforme');
56        include_spip('filtres/images_typo');
57        include_spip('filtres/charsets');
58
59        // faut il un masque avec filigrane noir ou blanc? (masque bla_000000.png ou bla_ffffff.png)
60        $coul_txt = couleur_inverser( couleur_extreme( couleur_extraire($fichier, 19,19)));
61
62        // si elle n'existe pas déja, générer l'image typo du filigrane et la stocker dans le dossier IMG/filigranes
63        $credits = $flux['data']['credits'];
64        $nomfic_credits = substr(str_replace(' ', '_', translitteration($credits)), 0, 100);
65        $masque = 'filigranes/'.$nomfic_credits.'_'.$coul_txt.'.png';
66       
67        if (!find_in_path($masque)){
68                $img_typo = produire_image_typo('© '.$credits, 'taille=20', 'couleur='.$coul_txt, 'padding_horizontal=10', 'padding_vertital=5');
69                $img_typo = extraire_attribut(image_aplatir($img_typo, 'png', '808080',128,0), 'src');
70
71                if (!is_dir(_DIR_IMG.'filigranes')){
72                        include_spip('inc/getdocument');
73                        creer_repertoire_documents('filigranes');
74                }
75                @rename($img_typo, _DIR_IMG.$masque);
76                $masque = _DIR_IMG.$masque;
77        }
78//spip_log('fip masque: '.find_in_path($masque), 'c2f');
79
80        // appliquer le filigrane et generer un fichier jpg ou gif a partir du PNG obtenu
81        switch ($res['extension']) {
82                case 'jpg':
83                        $fic_res = extraire_attribut(image_aplatir(image_masque($fichier, $masque, "bottom=0", "right=0"),'jpg','ffffff',128,1), 'src');
84                break;
85                case 'gif':
86                        $fic_res = extraire_attribut(image_aplatir(image_masque($fichier, $masque, "bottom=0", "right=0"),'gif','ffffff',128,1), 'src');
87                break;
88                case 'png':
89                        $fic_res = extraire_attribut(image_masque($fichier, $masque, "bottom=0", "right=0"), 'src');
90                break;
91        }
92
93        if (@file_exists($fic_res)) {
94                @spip_unlink($fichier); // necessaire avant le rename si OS windows
95                @rename($fic_res, $fichier);
96        }
97       
98        return $flux;
99}
100
101?>
Note: See TracBrowser for help on using the repository browser.