summaryrefslogtreecommitdiff
path: root/utils/imagecache.php
diff options
context:
space:
mode:
Diffstat (limited to 'utils/imagecache.php')
-rw-r--r--utils/imagecache.php56
1 files changed, 35 insertions, 21 deletions
diff --git a/utils/imagecache.php b/utils/imagecache.php
index 3f91d79..5adf54c 100644
--- a/utils/imagecache.php
+++ b/utils/imagecache.php
@@ -7,16 +7,38 @@ include_once($UTIL_DIR . "/modules.php");
class ImageSize {
public $width;
public $height;
+ public $cut;
- public function ImageSize($w, $h)
+ public function ImageSize($w, $h, $c)
{
$this->width = $w;
$this->height = $h;
+ $this->cut = $c;
}
};
-function rescale($image, $width, $height)
+function rescale_nocut($image, $maxwidth, $maxheight)
{
+ $width = imagesx($image);
+ $height = imagesy($image);
+
+ if($width <= $maxwidth && $height <= $maxheight) return $image;
+
+ $scale = 1;
+ if($width > $maxwidth) $scale = $width / $maxwidth;
+ if($height / $scale > $maxheight) $scale = $height / $maxheight;
+
+ $image_p = imagecreatetruecolor($width / $scale, $height / $scale);
+ imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width / $scale,
+ $height / $scale, $width, $height);
+
+ return $image_p;
+}
+
+function rescale($image, $width, $height, $cut)
+{
+ if($cut == false) return rescale_nocut($image, $width, $height);
+
$aspect = $width / $height;
$w = imagesx($image);
@@ -60,27 +82,19 @@ function errorImage($message)
function getCachedImage($filename, $mod, $cat)
{
- global $modules;
- loadModule($mod);
- if(!$modules[$mod]) die(404);
- if(!method_exists($modules[$mod], "getImageSize")) die(404);
+ $module = loadModule($mod);
+ if(!$module) die(404);
+ if(!method_exists($module, "getImageSize")) die(404);
- $size = $modules[$mod]->getImageSize($cat);
+ $size = $module->getImageSize($cat);
$maxwidth = $size->width;
$maxheight = $size->height;
+ $cut = $size->cut;
- /*
- if($mod == "discography") {
- if($cat == "cover") { $maxwidth = 100; $maxheight = 100; }
- }
- if($mod == "gallery") {
- if($cat == "randomimage") { $maxwidth = 100; $maxheight = 100; }
- if($cat == "photo") { $maxwidth = 100; $maxheight = 100; }
- if($cat == "albumicon") { $maxwidth = 100; $maxheight = 100; }
- }
- */
global $IMAGECACHE, $JPEG_CACHE_QUALITY;
- $fullfilename = $IMAGECACHE . "/" . $maxwidth . ":" . $maxheight . ":". urlencode($filename);
+ $cutstr = "uncut";
+ if($cut) $cutstr = "cut";
+ $fullfilename = $IMAGECACHE . "/" . $maxwidth . ":" . $maxheight . ":" . $cutstr . ":" . urlencode($filename);
// Test the storage dir
if(!file_exists($IMAGECACHE)) {
@@ -106,21 +120,21 @@ function getCachedImage($filename, $mod, $cat)
case ".jpg":
$image = imagecreatefromjpeg(urldecode($filename));
if(!$image) errorImage("Could not read: ". $filename);
- $image = rescale($image, $maxwidth, $maxheight);
+ $image = rescale($image, $maxwidth, $maxheight, $cut);
imagejpeg($image, $fullfilename, $JPEG_CACHE_QUALITY);
break;
case ".gif":
$image = imagecreatefromgif(urldecode($filename));
if(!$image) errorImage("Could not read: ". $filename);
- $image = rescale($image, $maxwidth, $maxheight);
+ $image = rescale($image, $maxwidth, $maxheight, $cut);
imagegif($image, $fullfilename);
break;
case ".png":
$image = imagecreatefrompng(urldecode($filename));
if(!$image) errorImage("Could not read: ". $filename);
- $image = rescale($image, $maxwidth, $maxheight);
+ $image = rescale($image, $maxwidth, $maxheight, $cut);
imagepng($image, $fullfilename);
break;