1
0
mirror of https://github.com/danbee/myimages synced 2025-03-04 08:39:09 +00:00
myimages/image.php
2010-03-10 11:08:15 +00:00

88 lines
2.0 KiB
PHP

<?php
include_once('config/config.php');
// The file
$filename = IMAGES . '/' . $_GET['user'] . '/' . $_GET['image'];
//echo $filename, '<br />';
$ext = substr($filename, -3);
// Content type
switch ($ext) {
case 'png':
case 'PNG':
$type = 'image/png';
break;
case 'jpg':
case 'jpeg':
case 'JPG':
case 'JPEG':
$type = 'image/jpeg';
break;
case 'gif':
case 'GIF':
$type = 'image/gif';
break;
}
header('Content-type: ' . $type);
list($width_orig, $height_orig) = getimagesize($filename);
if (isset($_GET['size']) && ($_GET['size'] < $width_orig || $_GET['size'] < $height_orig)) {
// Set a maximum height and width
$width = $_GET['size'];
$height = $_GET['size'];
$script_root = substr($_SERVER["SCRIPT_FILENAME"], 0, strrpos($_SERVER["SCRIPT_FILENAME"], '/'));
$cache_file_name = "$script_root/imagecache/" . md5($filename . $width) . ".$ext";
if (!file_exists($cache_file_name)) {
// Get new dimensions
$ratio_orig = $width_orig/$height_orig;
if ($width/$height > $ratio_orig) {
$width = $height*$ratio_orig;
} else {
$height = $width/$ratio_orig;
}
// Resample
$image_p = imagecreatetruecolor($width, $height);
switch ($ext) {
case 'png':
case 'PNG':
$image = imagecreatefrompng($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
imagepng($image_p, $cache_file_name, 5);
break;
case 'jpg':
case 'jpeg':
case 'JPG':
case 'JPEG':
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
imagejpeg($image_p, $cache_file_name, 95);
break;
case 'gif':
case 'GIF':
$image = imagecreatefromgif($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
imagegif($image_p, $cache_file_name);
break;
}
}
echo file_get_contents($cache_file_name);
}
else {
echo file_get_contents($filename);
}
?>