<?php
?>
<?php
/***
* Author : Marcin (tiraeth) Chwedziak
* Contact : me[at]tiraeth.info
* Website : <a href="http://tiraeth.info/blog/" target="_blank">http://tiraeth.info/blog/</a>
* Created : 08/23/2006 4:41 pm
*
*
* mixed makeThumbnail ()
* ---
* imageHandle - name of file to create thumbnail
* destWidth - destination image width
* destHeight - destination image height
* scaleType - scale, fit or resize
* displayImage - true, if you want to display image or filename if you want to save image
* jpegQuality - quality of jpeg image if you are creating jpeg file
* returnType - destination image type (gif,jpeg,png,wbmp or default if you want to use source file type)
*/
function makeThumbnail ( $imageHandle, $destWidth, $destHeight, $scaleType = 'scale', $displayImage = true, $jpegQuality = 92, $returnType = 'default' )
{
if ( $displayImage === true ) {}
else { $savePath = $displayImage; $displayImage = false; }
{
$imgType = $imgType[2];
switch ( $imgType )
{
case 1 : $imgType = 'gif'; break;
case 2 : $imgType = 'jpeg'; break;
case 3 : $imgType = 'png'; break;
case 6 : $imgType = 'bmp'; break;
default : $imgType = 'illegal';
}
if ( $imgType == 'illegal' )
{
if ( $displayImage )
{
echo 'Error: Incorrect file type. You can only use GIF/JPEG/PNG and BMP files.'; }
else
{
return array('error_message' => 'Incorrect file type. You can only use GIF/JPEG/PNG and BMP files.'); }
}
$imgSrc = false;
switch ( $imgType )
{
case 'gif' :
$imgSrc = @imagecreatefromgif($imageHandle);
break;
case 'jpeg' :
$imgSrc = @imagecreatefromjpeg($imageHandle);
break;
case 'png' :
$imgSrc = @imagecreatefrompng($imageHandle);
break;
case 'bmp' :
$imgSrc = @imagecreatefromwbmp($imageHandle);
break;
}
if ( $imgSrc == '' )
{
if ( $displayImage )
{
echo 'Error: Could not create image handle.'; }
else
{
return array('error_message' => 'Could not create image handle.'); }
}
}
else
{
if ( $displayImage )
{
echo 'Error: File doesn't exists
.'; }
else
{
return array('error_message
' => 'File doesn
't exists.'); }
}
$imageWidth = imagesx($imgSrc);
$imageHeight = imagesy($imgSrc);
if ( $scaleType == 'scale' )
{
// Scale
if ( $imageWidth > $imageHeight )
{
// Landscape
$newWidth = $destWidth;
$newHeight = ceil ( $imageHeight * $newWidth / $imageWidth ); }
elseif ( $imageWidth < $imageHeight )
{
$newHeight = $destHeight;
$newWidth = ceil ( $imageWidth * $newHeight / $imageHeight ); }
else
{
$newWidth = $destWidth;
$newHeight = $destHeight;
}
$movex = 0;
$movey = 0;
$createWidth = $newWidth;
$createHeight = $newHeight;
}
elseif ( $scaleType == 'fit' )
{
// Fit
if ( $imageWidth > $imageHeight )
{
$newHeight = $destHeight;
$newWidth = ceil ( $imageWidth * $newHeight / $imageHeight );
$movex = ceil ( ($newWidth - $destWidth)/2
)*-1; $movey = 0;
}
elseif ( $imageWidth < $imageHeight )
{
$newWidth = $destWidth;
$newHeight = ceil ( $imageHeight * $newWidth / $imageWidth );
$movex = 0;
$movey = ceil ( ($newHeight - $destHeight)/2
)*-1; }
else
{
$newWidth = $destWidth;
$newHeight = $destHeight;
$movex = 0;
$movey = 0;
}
$createWidth = $destWidth;
$createHeight = $destHeight;
}
else
{
// Resize
$newWidth = $destWidth;
$newHeight = $destHeight;
$movex = 0;
$movey = 0;
$createWidth = $newWidth;
$createHeight = $newHeight;
}
$imgDest = imagecreatetruecolor ( $createWidth, $createHeight );
imagecopyresampled ( $imgDest, $imgSrc, $movex, $movey, 0, 0, $newWidth, $newHeight, $imageWidth, $imageHeight );
if ( $displayImage )
{
header("Content-type: image/" . $imgType); }
if ( $returnType == 'default' )
{
switch ( $imgType )
{
case 'gif' :
if ( $displayImage ) { imagegif($imgDest); }
else { imagegif($imgDest, $savePath); }
break;
case 'jpeg' :
if ( $displayImage ) { imagejpeg($imgDest, '', $jpegQuality); }
else { imagegif($imgDest, $savePath); }
break;
case 'png' :
if ( $displayImage ) { imagepng($imgDest); }
else { imagepng($imgDest, $savePath); }
break;
case 'bmp' :
if ( $displayImage ) { imagewbmp($imgDest); }
else { imagewbmp($imgDest, $savePath); }
break;
}
}
else
{
switch ( $returnType )
{
case 'gif' :
if ( $displayImage ) { imagegif($imgDest); }
else { imagegif($imgDest, $savePath); }
break;
case 'jpeg' :
if ( $displayImage ) { imagejpeg($imgDest, '', $jpegQuality); }
else { imagegif($imgDest, $savePath); }
break;
case 'png' :
if ( $displayImage ) { imagepng($imgDest); }
else { imagepng($imgDest, $savePath); }
break;
case 'bmp' :
if ( $displayImage ) { imagewbmp($imgDest); }
else { imagewbmp($imgDest, $savePath); }
break;
}
}
if ( $displayImage == false )
{
'filename' => $imageHandle,
'save_path' => $savePath,
'image_width' => $imageWidth,
'image_height' => $imageHeight,
'return_width' => $newWidth,
'return_height' => $newHeight,
'image_type' => $imgType,
'return_type' => ( $returnType == 'default' ) ? $imgType : $returnType,
'jpeg_quality' => ( $returnType == 'jpeg' || ( $returnType == 'default' && $imgType == 'jpeg' ) ) ? $jpegQuality : false,
);
}
}
makeThumbnail ( '1.jpg', 100, 100, 'scale', true, 100, 'jpg' );
?>