source: spip-zone/_plugins_/centre_image/centre_image_fonctions.php @ 88755

Last change on this file since 88755 was 88755, checked in by arno@…, 5 years ago

Le gros truc: le centre d’intérêt des images est affiché dans l’espace privé par une petite croix. En déplaçant la croix (glisser/déposer), on corrige instantanément le centre d’intérêt automatique.

File size: 2.5 KB
Line 
1<?php
2
3
4function centre_image($fichier) {
5        static $spip_centre_image = array();
6       
7        // nettoyer le fichier (qui peut être dans un <img> ou qui peut être daté)
8        if (preg_match("/src\=/", $fichier)) $fichier = extraire_attribut($fichier, "src");
9        $fichier = preg_replace(",\?[0-9]*$,", "", $fichier);
10
11        // on mémorise le résultat -> don
12        if ($spip_centre_image["$fichier"]) return $spip_centre_image["$fichier"];
13
14        if (file_exists($fichier)) {
15                $md5 = md5($fichier);
16                $l1 = substr($md5, 0, 1 );
17                $l2 = substr($md5, 1, 1);
18
19                $cache = sous_repertoire(_DIR_VAR, "cache-centre-image");
20                $cache = sous_repertoire($cache, $l1);
21                $cache = sous_repertoire($cache, $l2);
22               
23                $forcer = sous_repertoire(_DIR_IMG, "cache-centre-image");
24               
25                $fichier_json = "$cache$md5.json";
26                $fichier_forcer = "$forcer$md5.json";
27               
28                if (file_exists($fichier_forcer) and filemtime($fichier_forcer) > filemtime($fichier)) {
29                        $res = json_decode(file_get_contents($fichier_forcer),TRUE);
30                }
31                else if (file_exists($fichier_json) and filemtime($fichier_json) > filemtime($fichier)) {
32                        $res = json_decode(file_get_contents($fichier_json),TRUE);
33                } else {
34                        if(function_exists("imagefilter")) {
35                                if (preg_match(",\.(gif|jpe?g|png)($|[?]),i", $fichier, $regs)) {
36                                        include_spip('inc/centre_image_lib');
37                                        include_spip('inc/filtres_images_lib_mini');
38                                        $terminaison = strtolower($regs[1]);
39                                        $terminaison = str_replace("jpg", "jpeg", $terminaison);
40                                        $fonction_imagecreatefrom = "_imagecreatefrom".$terminaison;
41                               
42                                        $img     = $fonction_imagecreatefrom($fichier);
43                                        $cropper = new _centre_image($img);
44                                        $res = $cropper->find_focus();
45                                        imagedestroy($img);
46                                }
47                        } else {
48                                $res = array("x" => 0.5, "y" => 0.5);
49                        }
50                       
51                        file_put_contents($fichier_json, json_encode($res,TRUE));
52                }
53    } else {
54        $res = array("x" => 0.5, "y" => 0.5);
55    }
56   
57    $spip_centre_image["$fichier"] = $res;
58        return $res;   
59}
60
61function centre_image_x($fichier) {
62        $res = centre_image($fichier);
63        return $res["x"];
64}
65function centre_image_y($fichier) {
66        $res = centre_image($fichier);
67        return $res["y"];
68}
69
70
71
72function centre_image_header_prive($flux) {
73        $flux .= "\n<script type='text/javascript' src='".find_in_path("centre_image_gestion.js")."'></script>\n";
74       
75        $flux .= "\n<script>var croix = '".find_in_path("imgs/croix.png")."'</script>";
76
77        return $flux;
78}
79
80function centre_image_jqueryui_plugins($plugins) {
81        if (_DIR_RACINE == "../") {
82                $plugins[] = "jquery.ui.core";
83                $plugins[] = "jquery.ui.draggable";
84        }
85        return $plugins;
86}
Note: See TracBrowser for help on using the repository browser.