Code below resizes the images but I have a new requirement to it.
Requirement: I want to add padding to short edge with any colour. So when it is scaled down to 100(w)X150(h), it should be saved as 150X150 afted being padded.
For the padding option I've seen these two posts but failed to implement. Please help me to modify my code.
Thanks in advance
$this->defaults['width'] = 100;
$this->defaults['height'] = 150;
private function createThumbnail($sourceImage, $targetImage)
{
list($sourceWidth, $sourceHeight, $sourceType) = getimagesize($sourceImage);
switch ($sourceType)
{
case IMAGETYPE_GIF:
$sourceGdImage = imagecreatefromgif($sourceImage);
break;
case IMAGETYPE_JPEG:
$sourceGdImage = imagecreatefromjpeg($sourceImage);
break;
case IMAGETYPE_PNG:
$sourceGdImage = imagecreatefrompng($sourceImage);
break;
}
if ($sourceGdImage === false)
{
return false;
}
$sourceAspectRatio = ($sourceWidth / $sourceHeight);
$thumbnailAspectRatio = ($this->defaults['width'] / $this->defaults['height']);
if ($sourceWidth <= $this->defaults['width'] && $sourceHeight <= $this->defaults['height'])
{
$thumbnailWidth = $sourceWidth;
$thumbnailHeight = $sourceHeight;
}
elseif ($thumbnailAspectRatio > $sourceAspectRatio)
{
$thumbnailWidth = (int) ($this->defaults['height'] * $sourceAspectRatio);
$thumbnailHeight = $this->defaults['height'];
}
else
{
$thumbnailWidth = $this->defaults['width'];
$thumbnailHeight = (int) ($this->defaults['width'] / $sourceAspectRatio);
}
$thumbnailGdImage = imagecreatetruecolor($thumbnailWidth, $thumbnailHeight);
imagecopyresampled($thumbnailGdImage, $sourceGdImage, 0, 0, 0, 0, $thumbnailWidth, $thumbnailHeight, $sourceWidth, $sourceHeight);
switch ($sourceType)
{
case IMAGETYPE_GIF:
imagegif($thumbnailGdImage, $targetImage, 90);
break;
case IMAGETYPE_JPEG:
imagejpeg($thumbnailGdImage, $targetImage, 90);
break;
case IMAGETYPE_PNG:
imagepng($thumbnailGdImage, $targetImage, 9);
break;
}
imagedestroy($sourceGdImage);
imagedestroy($thumbnailGdImage);
return true;
}