source: spip-zone/_plugins_/smush_images/trunk/inc/smush_image.php @ 80452

Last change on this file since 80452 was 80452, checked in by kent1@…, 6 years ago

option -f sur pngnq

Incrément de version

File size: 2.9 KB
Line 
1<?php
2if (!defined("_ECRIRE_INC_VERSION")) return;
3
4function inc_smush_image_dist($im){
5       
6        $image = _image_valeurs_trans($im, "smush");
7        $im = $image["fichier"];
8        $dest = $image["fichier_dest"];
9        $creer = $image["creer"];
10        if($creer && !_IS_BOT){
11                if(defined(_SMUSH_API) && _SMUSH_API){
12                        //spip_log($image,'test.'._LOG_ERREUR);
13                        include_spip('inc/smush_php_compat');
14                        if(!file_exists($im)){
15                                spip_log("SMUSH : mauvais chemin pour la fonction smush_image","test."._LOG_ERREUR);
16                                return '';
17                        }
18                        spip_log("SMUSH : smush_image pour $im","smush");
19
20                        // L'adresse de l'API que l'on utilise
21                        $url_smush = 'http://www.smushit.com/ysmush.it/ws.php';
22
23                        // On ajoute les paramètres nécessaires pour l'API
24                        $url_smush_finale = parametre_url($url_smush,'img',url_absolue($im));
25                        spip_log("SMUSH : recuperation du contenu de $url_smush_finale","smush");
26
27                        $content = file_get_contents($url_smush_finale);
28                        $newcontent = json_decode($content, true);
29
30                        spip_log($newcontent,"smush."._LOG_ERREUR);
31
32                        if(!$newcontent['error']){
33                                include_spip('inc/distant');
34                                $new_url = $newcontent['dest'];
35                                spip_log("SMUSH : recuperation du fichier $new_url","smush");
36                                $contenu = recuperer_page($new_url,false,false,_COPIE_LOCALE_MAX_SIZE);
37                                if (!$contenu) return false;
38                                ecrire_fichier($im, $contenu);
39                        }else{
40                                spip_log('SMUSH en erreur','test.'._LOG_ERREUR);
41                                spip_log($newcontent['error'],'test.'._LOG_ERREUR);
42                        }
43                }else{
44                        if ($dest = image_smush($im, _DIR_TMP.basename($im).'-smush-'.getmypid())
45                                AND is_readable($dest)
46                                AND filesize($dest) > 0
47                                AND filesize($dest) < filesize($im)
48                                ){
49                                        rename($dest,$im);
50                                }else if(file_exists($dest)){
51                                        spip_unlink($dest);
52                                }else{
53                                        spip_log('Fichier n existe pas','test.'._LOG_ERREUR);
54                                }
55                }
56        }
57       
58        return _image_ecrire_tag($image,array('src'=>$dest));
59}
60
61function image_smush($im) {
62        $fonction = array('smush', func_get_args());
63        $image = _image_valeurs_trans($im, "",false,$fonction);
64        if (!$image) return("");
65
66        $im = $image["fichier"];
67        $dest = $image["fichier_dest"];
68        $creer = $image["creer"];
69
70        // Methode precise
71        // resultat plus beau, mais tres lourd
72        // Et: indispensable pour preserver transparence!
73
74        if ($creer) {
75                $format = trim(exec('identify -format %m '.$im));
76
77                if ($format == 'GIF') {
78                        $dest = $tmp.'.png';
79                        exec('convert '.$im.' '.$dest);
80                        $source = $dest;
81                        $format = 'PNG';
82                }
83
84                else if ($format == 'PNG') {
85                        $nq = substr($source,0,-4).'-nq8.png';
86                        exec('pngnq -f '.$im.' && optipng -o5 '.$nq.' -out '.$dest,$out);
87                        if(file_exists($nq))
88                                spip_unlink($nq);
89                        return $dest;
90                }
91
92                else if ($format == 'JPEG') {
93                        $fsize = filesize($im);
94                        $dest = $tmp.'.jpg';
95                        if ($fsize < 10*1024)
96                                exec('jpegtran -copy none -optimize '.$im.' > '.$dest);
97                        else
98                                exec('jpegtran -copy none -progressive '.$im.' > '.$dest);
99                }
100        }
101        return _image_ecrire_tag($image,array('src'=>$dest));
102}
103?>
Note: See TracBrowser for help on using the repository browser.