source: spip-zone/_plugins_/crop_image/trunk/formulaires/recadrer_image.php @ 104925

Last change on this file since 104925 was 104925, checked in by tofulm@…, 4 years ago

il manquait autoriser

File size: 3.5 KB
Line 
1<?php
2if (!defined('_ECRIRE_INC_VERSION')) return;
3
4function formulaires_recadrer_image_charger_dist($objet="document", $id_objet, $redirect=''){
5        $valeurs = array();
6        include_spip('inc/autoriser');
7
8
9        if ($objet == "document") {
10                $valeurs['id_document'] = intval($id_objet);
11                if (autoriser('modifier','document',intval($id_objet))) {
12                        return $valeurs;
13                }
14        } elseif ($objet == "article") {
15                $valeurs['id_article'] = intval($id_objet);
16                if (autoriser('modifier','article',intval($id_objet))) {
17                        return $valeurs;
18                }
19        } elseif ($objet == "rubrique") {
20                $valeurs['id_rubrique'] = intval($id_objet);
21                if (autoriser('modifier','rubrique',intval($id_objet))) {
22                        return $valeurs;
23                }
24        }
25
26        return false;
27}
28
29function formulaires_recadrer_image_verifier_dist($objet="document", $id_objet, $redirect=''){
30        $erreurs = array();
31        // on ne recadre pas une image non modifiee
32        if ( intval(_request('w')) === 0 ) {
33                $erreurs['message_erreur'] = _T('jcrop:selectionner_region_obligatoire');
34        }
35        return $erreurs;
36}
37
38function formulaires_recadrer_image_traiter_dist($objet="document", $id_objet, $redirect=''){
39
40        $retour = array();
41        $fichier = _request('fichier');
42        if ($objet == "document") {
43                $fichier = find_in_path($fichier);
44        } else {
45                $fichier = _DIR_IMG.'/'.$fichier;
46        }
47
48        $modif = decoupe_img(
49                $fichier,
50                $fichier,
51                _request('x'),
52                _request('y'),
53                _request('w'),
54                _request('h')
55        );
56        // On modifie les valeurs taille/largeur/hauteur en bdd
57        if ($modif and $objet == "document") {
58                $set = array(
59                        'taille'  => filesize(find_in_path(_request('fichier'))),
60                        'largeur' => _request('w'),
61                        'hauteur' => _request('h')
62                );
63                include_spip('action/editer_objet');
64                $objet = "document";
65                objet_modifier($objet, intval($id_objet), $set);
66        }
67
68        if ($redirect) {
69                $retour['redirect'] = $redirect;
70        }
71        return $retour;
72}
73
74/**
75 * Recadrer/Découper une image jpg ou png
76 *
77 * @param $img_ini = CHEMIN+NOM_FICHIER image initiale,
78 * @param $img_fin = CHEMIN+NOM_FICHIER image finale,
79 * @param $x et $y = coordonnées x et y de la découpe de l'image
80 * @param $l et $h = largeur et hauteur max de l'image finale
81 * @param $detruire_ini = effacer l'original (true) ou le garder (false)
82 * @return return la taille de la nouvelle image
83 * @author cy_altern
84 **/
85function decoupe_img($img_ini, $img_fin, $x = 0, $y = 0, $w = 400, $h = 300, $detruire_ini=false) {
86        if (!file_exists($img_ini)) return 'Le fichier '.$img_ini.' n\'existe pas';
87        // déterminer le type de fonction de création d'image à utiliser
88        $param_img = getimagesize($img_ini);
89        $type_img = $param_img[2];
90        switch ($type_img) {
91        case 2 :
92                $fct_creation_ext = 'imagecreatefromjpeg';
93                $fct_ecrire = 'imagejpeg';
94                $ext_img = '.jpg';
95                break;
96        case 3 :
97                $fct_creation_ext = 'imagecreatefrompng';
98                $fct_ecrire = 'imagepng';
99                $ext_img = '.png';
100                break;
101        default :
102                return false;
103                break;
104        }
105        $img_nv = imagecreatetruecolor($w, $h);
106        $img_acopier = $fct_creation_ext($img_ini);
107        // gérer la transparence pour les images PNG (le mec qui a trouvé ce code est génial! :-)
108        if ($type_img == 3) {
109                imagecolortransparent($img_nv, imagecolorallocate($img_nv, 0, 0, 0));
110                imagealphablending($img_nv, false);
111                imagesavealpha($img_nv, true);
112        }
113        $res = imagecopyresampled($img_nv, $img_acopier, 0, 0, $x, $y, $w, $h, $w, $h);
114        // sauvegarder l'image et éventuellement détruire le fichier image initial
115        $fct_ecrire($img_nv, $img_fin);
116        imagedestroy($img_nv);
117        imagedestroy($img_acopier);
118        if ($detruire_ini == true) unlink($img_ini);
119        if ($res) {
120                return true;
121        } else {
122                return false;
123        }
124}
Note: See TracBrowser for help on using the repository browser.