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

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

Nouveau plugin destiné à la détection automatique point centre d’intérêt d’une image.

File size: 1.8 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 (function_exists("imagefilter") && 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               
27                if (file_exists($fichier_json) and filemtime($fichier_json) > filemtime($fichier) and 1==2) {
28                        $res = json_decode(file_get_contents($fichier_json),TRUE);
29                } else {
30       
31                        if (preg_match(",\.(gif|jpe?g|png)($|[?]),i", $fichier, $regs)) {
32                                include_spip('inc/centre_image_lib');
33                                include_spip('inc/filtres_images_lib_mini');
34                                $terminaison = strtolower($regs[1]);
35                                $terminaison = str_replace("jpg", "jpeg", $terminaison);
36                                $fonction_imagecreatefrom = "_imagecreatefrom".$terminaison;
37                       
38                                $img     = $fonction_imagecreatefrom($fichier);
39                                $cropper = new _centre_image($img);
40                                $res = $cropper->find_focus();
41                                imagedestroy($img);
42                        }
43                       
44                        file_put_contents($fichier_json, json_encode($res,TRUE));
45                }
46    } else {
47        $res = array("x" => 0.5, "y" => 0.5);
48    }
49   
50    $spip_centre_image["$fichier"] = $res;
51        return $res;   
52}
53
54function centre_image_x($fichier) {
55        $res = centre_image($fichier);
56        return $res["x"];
57}
58function centre_image_y($fichier) {
59        $res = centre_image($fichier);
60        return $res["y"];
61}
Note: See TracBrowser for help on using the repository browser.