forked from Public/pics
Minor Thumbnail refactors from upstream Kabuki.
This commit is contained in:
parent
d069ddca18
commit
555c61937b
@ -3,7 +3,7 @@
|
|||||||
* Thumbnail.php
|
* Thumbnail.php
|
||||||
* Contains key class Thumbnail.
|
* Contains key class Thumbnail.
|
||||||
*
|
*
|
||||||
* Kabuki CMS (C) 2013-2015, Aaron van Geffen
|
* Kabuki CMS (C) 2013-2020, Aaron van Geffen
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
class Thumbnail
|
class Thumbnail
|
||||||
@ -45,24 +45,29 @@ class Thumbnail
|
|||||||
$thumb_selector = $this->width . 'x' . $this->height . $this->filename_suffix;
|
$thumb_selector = $this->width . 'x' . $this->height . $this->filename_suffix;
|
||||||
if (!empty($this->thumbnails[$thumb_selector]))
|
if (!empty($this->thumbnails[$thumb_selector]))
|
||||||
{
|
{
|
||||||
if (file_exists(THUMBSDIR . '/' . $this->image->getSubdir() . '/' . $this->thumbnails[$thumb_selector]))
|
$thumb_path = '/' . $this->image->getSubdir() . '/' . $this->thumbnails[$thumb_selector];
|
||||||
return THUMBSURL . '/' . $this->image->getSubdir() . '/' . $this->thumbnails[$thumb_selector];
|
if (file_exists(THUMBSDIR . $thumb_path))
|
||||||
|
return THUMBSURL . $thumb_path;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do we have a custom thumbnail on file?
|
// Do we have a custom thumbnail on file?
|
||||||
$custom_selector = 'custom_' . $this->width . 'x' . $this->height;
|
$custom_selector = 'custom_' . $this->width . 'x' . $this->height;
|
||||||
if (isset($this->image_meta[$custom_selector]))
|
if (isset($this->image_meta[$custom_selector]))
|
||||||
{
|
{
|
||||||
if (file_exists(ASSETSDIR . '/' . $this->image->getSubdir() . '/' . $this->image_meta[$custom_selector]))
|
$custom_thumb_path = '/' . $this->image->getSubdir() . '/' . $this->image_meta[$custom_selector];
|
||||||
|
if (file_exists(ASSETSDIR . $custom_thumb_path))
|
||||||
{
|
{
|
||||||
|
// Ensure destination thumbnail directory exists.
|
||||||
|
if (!file_exists($this->image->getSubdir()))
|
||||||
|
@mkdir(THUMBSDIR . '/' . $this->image->getSubdir(), 0755, true);
|
||||||
|
|
||||||
// Copy the custom thumbail to the general thumbnail directory.
|
// Copy the custom thumbail to the general thumbnail directory.
|
||||||
copy(ASSETSDIR . '/' . $this->image->getSubdir() . '/' . $this->image_meta[$custom_selector],
|
copy(ASSETSDIR . $custom_thumb_path, THUMBSDIR . $custom_thumb_path);
|
||||||
THUMBSDIR . '/' . $this->image->getSubdir() . '/' . $this->image_meta[$custom_selector]);
|
|
||||||
|
|
||||||
// Let's remember this for future reference.
|
// Let's remember this for future reference.
|
||||||
$this->markAsGenerated($this->image_meta[$custom_selector]);
|
$this->markAsGenerated($this->image_meta[$custom_selector]);
|
||||||
|
|
||||||
return THUMBSURL . '/' . $this->image->getSubdir() . '/' . $this->image_meta[$custom_selector];
|
return THUMBSURL . $custom_thumb_path;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
throw new UnexpectedValueException('Custom thumbnail expected, but missing in file system!');
|
throw new UnexpectedValueException('Custom thumbnail expected, but missing in file system!');
|
||||||
@ -84,7 +89,7 @@ class Thumbnail
|
|||||||
// Still here..? What are you up to? ..Sneaking?
|
// Still here..? What are you up to? ..Sneaking?
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
throw new Exception("Trying to generate a thumbnail for values that were not previously initialised by the system?\n" . print_r(func_get_args(), true));
|
throw new Exception("Trying to generate a thumbnail for selector " . $thumb_selector . ", which does not appear to have been requested by the system.\n" . print_r(func_get_args(), true));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,14 +132,14 @@ class Thumbnail
|
|||||||
if (isset($this->image_meta[$crop_selector]))
|
if (isset($this->image_meta[$crop_selector]))
|
||||||
$this->crop_mode = self::CROP_MODE_BOUNDARY;
|
$this->crop_mode = self::CROP_MODE_BOUNDARY;
|
||||||
|
|
||||||
// If the original image's aspect ratio is much wider, take a slice instead.
|
|
||||||
if ($this->image->ratio() > $this->ratio())
|
|
||||||
$this->crop_mode = self::CROP_MODE_SLICE_CENTRE;
|
|
||||||
|
|
||||||
// We won't be cropping if the thumbnail is proportional to its original.
|
// We won't be cropping if the thumbnail is proportional to its original.
|
||||||
elseif (abs($this->ratio() - $this->image->ratio()) <= 0.025)
|
elseif (abs($this->ratio() - $this->image->ratio()) <= 0.025)
|
||||||
$this->crop_mode = self::CROP_MODE_NONE;
|
$this->crop_mode = self::CROP_MODE_NONE;
|
||||||
|
|
||||||
|
// If the original image's aspect ratio is much wider, take a slice instead.
|
||||||
|
elseif ($this->image->ratio() > $this->ratio())
|
||||||
|
$this->crop_mode = self::CROP_MODE_SLICE_CENTRE;
|
||||||
|
|
||||||
// Slice from the top?
|
// Slice from the top?
|
||||||
elseif ($crop === 'top' || $crop === 'ct')
|
elseif ($crop === 'top' || $crop === 'ct')
|
||||||
$this->crop_mode = self::CROP_MODE_SLICE_TOP;
|
$this->crop_mode = self::CROP_MODE_SLICE_TOP;
|
||||||
|
Loading…
Reference in New Issue
Block a user