source: pmb4.2/trunk/fuentes/pmb/getimage.php @ 819

Last change on this file since 819 was 815, checked in by jrpelegrina, 4 years ago

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 7.7 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: getimage.php,v 1.22 2015-05-28 07:59:21 jpermanne Exp $
6
7if(isset($_GET['noticecode'])){
8        $noticecode=$_GET['noticecode'];
9}else{
10        $noticecode="";
11}
12if(isset($_GET['vigurl'])){
13        $vigurl=$_GET['vigurl'];
14}else{
15        $vigurl="";
16}
17
18$base_path     = ".";                           
19$base_auth     = ""; //"CIRCULATION_AUTH"; 
20$base_title    = "";   
21$base_noheader = 1;
22$base_nocheck  = 1;
23$base_nobody   = 1;
24
25require_once ($base_path."/includes/init.inc.php");
26require_once($class_path."/curl.class.php");
27require_once("$base_path/includes/isbn.inc.php");
28
29session_write_close();
30
31$poids_fichier_max=1024*1024;//Limite la taille de l'image à 1 Mo
32
33if($notice_id && $pmb_notice_img_folder_id){
34        $req = "select repertoire_path from upload_repertoire where repertoire_id ='".$pmb_notice_img_folder_id."'";
35        $res = pmb_mysql_query($req,$dbh);
36        if(pmb_mysql_num_rows($res)){
37                $rep=pmb_mysql_fetch_object($res);
38                $img=$rep->repertoire_path."img_".$notice_id;
39                header('Content-Type: image/png');
40                $fp=@fopen($img, "rb");
41                fpassthru($fp);
42                fclose($fp) ;
43                exit;
44        }
45}
46if($etagere_id && $pmb_notice_img_folder_id){
47        $req = "select repertoire_path from upload_repertoire where repertoire_id ='".$pmb_notice_img_folder_id."'";
48        $res = pmb_mysql_query($req,$dbh);
49        if(pmb_mysql_num_rows($res)){
50                $rep=pmb_mysql_fetch_object($res);
51                $img=$rep->repertoire_path."img_etag_".$etagere_id;
52                header('Content-Type: image/png');
53                $fp=@fopen($img, "rb");
54                fpassthru($fp);
55                fclose($fp) ;
56                exit;
57        }
58}
59if ($noticecode) { 
60        if (isEAN($noticecode)) {
61                if (isISBN($noticecode)) {
62                        if (isISBN10($noticecode)) {
63                                $url_image10=str_replace("!!isbn!!", str_replace("-","",$noticecode), $_GET['url_image']);
64                                $url_image13=str_replace("!!isbn!!", str_replace("-","",formatISBN($noticecode,"13")), $_GET['url_image']);
65                        } else {
66                                $url_image10=str_replace("!!isbn!!", str_replace("-","",EANtoISBN10($noticecode)), $_GET['url_image']);
67                                $url_image13=str_replace("!!isbn!!", str_replace("-","",$noticecode), $_GET['url_image']);
68                        }
69                } else {
70                        $url_imageEAN=str_replace("!!isbn!!", str_replace("-","",$noticecode), $_GET['url_image']);
71                }
72        } 
73        $url_image=str_replace("!!isbn!!", $noticecode, $_GET['url_image']);
74
75} else {
76        $url_image=rawurldecode(stripslashes($_GET['url_image']));
77}
78
79if ($pmb_curl_available) {
80        $image="";
81        $aCurl = new Curl();
82        $aCurl->limit=$poids_fichier_max;//Limite la taille de l'image à 1 Mo
83        $aCurl->timeout=15;
84        $aCurl->options["CURLOPT_SSL_VERIFYPEER"]="0";
85        $aCurl->options["CURLOPT_ENCODING"]="";
86        $content = $aCurl->get($vigurl);
87        $image=$content->body;
88        $need_copyright_amazon = false;
89       
90        if(!$image || $content->headers['Status-Code'] != 200){
91                $content = $aCurl->get($url_image10);
92                $image=$content->body;
93                if ($image && strpos($url_image10, 'amazon')) {
94                        $need_copyright_amazon = true;
95                }
96        }
97       
98        if(!$image || $content->headers['Status-Code'] != 200){
99                $content = $aCurl->get($url_image13);
100                $image=$content->body;
101                if ($image && strpos($url_image13, 'amazon')) {
102                        $need_copyright_amazon = true;
103                }
104        }
105       
106        if(!$image || $content->headers['Status-Code'] != 200){
107                $content = $aCurl->get($url_imageEAN);
108                $image=$content->body;
109                if ($image && strpos($url_imageEAN, 'amazon')) {
110                        $need_copyright_amazon = true;
111                }
112        }
113       
114        if(!$image || $content->headers['Status-Code'] != 200){
115                $content = $aCurl->get($url_image);
116                $image=$content->body;
117                if ($image && strpos($url_image, 'amazon')) {
118                        $need_copyright_amazon = true;
119                }
120        }
121       
122        if(!$image || $content->headers['Status-Code'] != 200 || $content->headers['Content-Length'] > $aCurl->limit){//Si le fichier est trop gros image n'est pas vide mais ne contient que le début d'ou le dernier test
123                $image_url = 'http';
124                if ($_SERVER["HTTPS"] == "on") {$image_url .= "s";}
125                $image_url .= "://";
126                $image_url .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].dirname($_SERVER["SCRIPT_NAME"]).'/images/vide.png';
127                $content = $aCurl->get($image_url);
128                $image = $content->body;
129        }
130       
131        if($image && $content->headers['Status-Code'] == 200){
132                if ($img=imagecreatefromstring($image)) {
133                        header('Content-Type: image/png');
134                        $redim=false;
135                        if($_GET['empr_pic']){
136                                if (imagesx($img) >= imagesy($img)) {
137                                        if(imagesx($img) <= $empr_pics_max_size){
138                                                $largeur=imagesx($img);
139                                                $hauteur=imagesy($img);
140                                        }else{
141                                                $redim=true;
142                                                $largeur=$empr_pics_max_size;
143                                                $hauteur = ($largeur*imagesy($img))/imagesx($img);
144                                        }       
145                                } else {
146                                        if(imagesy($img) <= $empr_pics_max_size){
147                                                $hauteur=imagesy($img);
148                                                $largeur=imagesx($img);
149                                        }else{
150                                                $redim=true;
151                                                $hauteur=$empr_pics_max_size;
152                                                $largeur = ($hauteur*imagesx($img))/imagesy($img);
153                                        }
154                                }
155                        }else{
156                                $largeur = imagesx($img);
157                                $hauteur = imagesy($img);
158                        }
159                       
160                        $dest = imagecreatetruecolor($largeur,$hauteur);
161                        $white = imagecolorallocate($dest, 255, 255, 255);
162                        imagefilledrectangle($dest, 0, 0, $largeur, $hauteur, $white);
163                        if($redim){
164                                imagecopyresampled($dest, $img, 0, 0, 0, 0, $largeur, $hauteur,imagesx($img),imagesy($img));
165                        }else{
166                                imagecopyresampled($dest, $img, 0, 0, 0, 0, $largeur, $hauteur, $largeur, $hauteur);
167                        }
168                       
169                        //Copyright Amazon
170                        if ($need_copyright_amazon) {
171                                imagestring($dest, 1, ($largeur/3), ($hauteur/1.1), "Copyright Amazon", $white);
172                        }
173                       
174                        imagepng($dest);
175                        imagedestroy($dest);
176                        imagedestroy($img);
177                }
178        }else{
179                //Je ne peux passer ici que si pmb/images/vide.png n'existe pas ou n'a pas les bons droits
180        }
181} else {
182        // priorité à vigurl si fournie
183        if ($fp=@fopen(rawurldecode(stripslashes($vigurl)), "rb")) {
184        } elseif ($fp=@fopen(rawurldecode(stripslashes($url_image10)), "rb")) {
185        } elseif ($fp=@fopen(rawurldecode(stripslashes($url_image13)), "rb")) {
186        } elseif ($fp=@fopen(rawurldecode(stripslashes($url_imageEAN)), "rb")) {
187        } elseif ($fp=@fopen(rawurldecode(stripslashes($url_image)), "rb")) {
188        }
189       
190        if ($fp) {
191                //Lecture et vérification de l'image
192                $image="";
193                $size=0;
194                $flag=true;
195                while (!feof($fp)) {
196                        $image.=fread($fp,4096);
197                        $size=strlen($image);
198                        if ($size>$poids_fichier_max) {
199                                $flag=false;
200                                break;
201                        }
202                }
203                if ($flag) {
204                        if ($img=imagecreatefromstring($image)) {
205                                header('Content-Type: image/png');
206                        $redim=false;
207                                if($_GET['empr_pic']){
208                                        if (imagesx($img) >= imagesy($img)) {
209                                                if(imagesx($img) <= $empr_pics_max_size){
210                                                        $largeur=imagesx($img);
211                                                        $hauteur=imagesy($img);
212                                                }else{
213                                                        $redim=true;
214                                                        $largeur=$empr_pics_max_size;
215                                                        $hauteur = ($largeur*imagesy($img))/imagesx($img);
216                                                }       
217                                        } else {
218                                                if(imagesy($img) <= $empr_pics_max_size){
219                                                        $hauteur=imagesy($img);
220                                                        $largeur=imagesx($img);
221                                                }else{
222                                                        $redim=true;
223                                                        $hauteur=$empr_pics_max_size;
224                                                        $largeur = ($hauteur*imagesx($img))/imagesy($img);
225                                                }
226                                        }
227                                }else{
228                                        $largeur = imagesx($img);
229                                        $hauteur = imagesy($img);
230                                }
231
232                                $dest = imagecreatetruecolor($largeur,$hauteur);
233                                $white = imagecolorallocate($dest, 255, 255, 255);
234                                imagefilledrectangle($dest, 0, 0, $largeur, $hauteur, $white);
235                                if($redim){
236                                        imagecopyresampled($dest, $img, 0, 0, 0, 0, $largeur, $hauteur,imagesx($img),imagesy($img));
237                                }else{
238                                        imagecopyresampled($dest, $img, 0, 0, 0, 0, $largeur, $hauteur, $largeur, $hauteur);
239                                }
240                                imagepng($dest);
241                                imagedestroy($dest);
242                                imagedestroy($img);
243                        }
244                }else{
245                        header('Content-Type: image/png');
246                        $fp=@fopen('./images/vide.png', "rb");
247                        fpassthru($fp);
248                        fclose($fp) ;
249                }
250                fclose($fp) ;
251        } else {
252                header('Content-Type: image/png');
253                $fp=@fopen('./images/vide.png', "rb");
254                fpassthru($fp);
255                fclose($fp) ;
256        }               
257}
258?>
Note: See TracBrowser for help on using the repository browser.