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