1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
<?php
/***************************************************************************
*
* Copyright (c) by Andreas Unterkircher, unki@netshadow.at
* All rights reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
***************************************************************************/
require_once "phpfspot.class.php";
class PHPFSPOT_IMG {
var $db;
var $parent;
/**
* PHPFSPOT_IMG class constructor
*/
public function __construct()
{
$this->parent = new PHPFSPOT;
$this->db = $this->parent->db;
} // __construct()
/**
* PHPFSPOT_IMG class destructor
*/
public function __destruct()
{
} // __desctruct()
/**
* sends the specified image to the browser
*
* this function will send the specified image to
* the client - in the specified width. it also try's
* to create on-the-fly missing thumbnails via PHPFSPOT
* gen_thumbs function.
*/
public function show($idx, $width = 0)
{
if($idx == 'rand')
$idx = $this->parent->get_random_photo();
$details = $this->parent->get_photo_details($idx);
if(!$details) {
$this->parent->showTextImage("The image you requested is unknown");
return;
}
/* no width specified - show photo in its original size */
if($width == 0) {
$fullpath = $this->parent->translate_path($details['directory_path']) ."/". $details['name'];
}
/* show thumbnail */
else {
/* if no entry for this photo is yet in the database, create thumb */
if(!$this->parent->getMD5($idx)) {
$this->parent->gen_thumb($idx);
}
$fullpath = $this->parent->cfg->base_path ."/thumbs/". $width ."_". $this->parent->getMD5($idx);
/* if the thumb file does not exist, create it */
if(!file_exists($fullpath)) {
$this->parent->gen_thumb($idx);
}
}
if(!file_exists($fullpath)) {
$this->parent->showTextImage("File ". basename($fullpath) ." does not exist");
return;
}
if(!is_readable($fullpath)) {
$this->parent->showTextImage("File ". basename($fullpath) ." is not readable. Check the permissions");
return;
}
$tmp = getimagesize($fullpath);
$mime = $tmp['mime'];
if(!$this->parent->checkifImageSupported($mime)) {
$this->parent->showTextImage("Unsupported Image Type");
return;
}
Header("Content-Type: ". $mime);
Header("Content-Length: ". filesize($fullpath));
Header("Content-Transfer-Encoding: binary\n");
Header("Content-Disposition: inline; filename=\"". $details['name'] ."\"");
Header("Accept-Ranges: bytes");
Header("Connection: close");
$file = fopen($fullpath, "rb");
fpassthru($file);
@fclose($file);
} // show()
}
if(isset($_GET['idx']) && (is_numeric($_GET['idx']) || $_GET['idx'] == 'rand')) {
$img = new PHPFSPOT_IMG;
if(isset($_GET['width']) && is_numeric($_GET['width']))
$img->show($_GET['idx'], $_GET['width']);
else
$img->show($_GET['idx']);
}
?>
|