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
|
<?php
require_once "phpfspot_db.php";
require_once "phpfspot.class.php";
class PHPFSPOT_IMG {
var $db;
var $parent;
public function __construct()
{
$this->parent = new PHPFSPOT;
$this->db = $this->parent->db;
} // __construct()
public function __destruct()
{
} // __desctruct()
public function show($idx, $width = "")
{
$details = $this->parent->get_photo_details($idx);
foreach(Array($this->parent->cfg->thumb_width, $this->parent->cfg->photo_width) as $resolution)
$this->resize_image($this->parent->translate_path($details['directory_path']) ."/". $details['name'], $resolution);
if($width == "")
$fullpath = $this->parent->translate_path($details['directory_path']) ."/". $details['name'];
else
$fullpath = $this->parent->translate_path($details['directory_path']) ."/thumbs/". $width ."_". $details['name'];
$tmp = getimagesize($fullpath);
$mime = $tmp['mime'];
Header("Content-Type: ". $mime);
Header("Content-Length: ". filesize($fullpath));
Header("Content-Transfer-Encoding: binary\n");
$user_agent = strtolower ($_SERVER["HTTP_USER_AGENT"]);
Header("Content-Disposition: inline; filename=\"". $details['name'] ."\"");
Header("Accept-Ranges: bytes");
Header("Connection: close");
$file = fopen($fullpath, "rb");
fpassthru($file);
@fclose($file);
} // show()
public function resize_image($image, $width)
{
$src_img = @imagecreatefromjpeg($image);
if($src_img)
{
/* grabs the height and width */
$new_w = imagesx($src_img);
$new_h = imagesy($src_img);
// If requested width is more then the actual image width,
// do not generate a thumbnail
if($width >= $new_w) {
imagedestroy($src_img);
return;
}
/* calculates aspect ratio */
$aspect_ratio = $new_h / $new_w;
/* sets new size */
$new_w = $width;
$new_h = abs($new_w * $aspect_ratio);
/* creates new image of that size */
$dst_img = imagecreatetruecolor($new_w,$new_h);
imagefill($dst_img, 0, 0, ImageColorAllocate($dst_img, 255, 255, 255));
/* copies resized portion of original image into new image */
imagecopyresampled($dst_img,$src_img,0,0,0,0,$new_w,$new_h,imagesx($src_img),imagesy($src_img));
/* write down new generated file */
if(!file_exists(dirname($image) ."/thumbs"))
mkdir(dirname($image) ."/thumbs");
$newfile = dirname($image) ."/thumbs/". $width ."_". basename($image);
imagejpeg($dst_img, $newfile, 75);
/* free your mind */
imagedestroy($dst_img);
imagedestroy($src_img);
}
} // resize_image()
}
if(isset($_GET['idx']) && is_numeric($_GET['idx'])) {
if(isset($_GET['width']) && is_numeric($_GET['width']))
$width = $_GET['width'];
else
$width = "";
$img = new PHPFSPOT_IMG;
$img->show($_GET['idx'], $width);
}
?>
|