<?php
function imageResize ($sFileNameFrom, $sFileNameTo, $KEEP_PROPORTIONS) {
$aProportions = array ('DO_NOT_KEEP_PROPORTIONS', 'KEEP_PROPORTIONS_ON_WIDTH', 'KEEP_PROPORTIONS_ON_HEIGHT', 'KEEP_PROPORTIONS_ON_BIGGEST', 'KEEP_PROPORTIONS_ON_SMALLEST');
if (!file_exists ($sFileNameFrom) || !is_array ($KEEP_PROPORTIONS) || empty ($KEEP_PROPORTIONS)) {
return false;
} else {
$aImg = @getimagesize ($sFileNameFrom);
if (false === $aImg) {
return false;
} else {
$aTypes = array (1 => 'gif', 2 => 'jpeg', 3 => 'png');
if (!in_array ($aImg[2], array_keys ($aTypes))) {
return false;
} else {
if (!in_array ($KEEP_PROPORTIONS[0], $aProportions)) {
return false;
}
$iCmpt = count ($KEEP_PROPORTIONS);
if (!empty ($KEEP_PROPORTIONS) && is_array ($KEEP_PROPORTIONS) && ($iCmpt >= 2) && is_int ($KEEP_PROPORTIONS[1])) {
switch ($KEEP_PROPORTIONS[0]) {
case 'KEEP_PROPORTIONS_ON_WIDTH' :
$width = $KEEP_PROPORTIONS[1];
$height = round ($aImg[1] / (round ($aImg[0]/$KEEP_PROPORTIONS[1])));
break;
case 'KEEP_PROPORTIONS_ON_HEIGHT' :
$height = $KEEP_PROPORTIONS[1];
$width = round ($aImg[0]/ (round ($aImg[1]/$KEEP_PROPORTIONS[1])));
break;
case 'KEEP_PROPORTIONS_ON_BIGGEST' :
if ($aImg[0] >= $aImg[1]) {
$width = $KEEP_PROPORTIONS[1];
$height = round ($aImg[1] / (round ($aImg[0]/$KEEP_PROPORTIONS[1])));
} else {
$height = $KEEP_PROPORTIONS[1];
$width = round ($aImg[0] / (round ($aImg[1]/$KEEP_PROPORTIONS[1])));
}
break;
case 'KEEP_PROPORTIONS_ON_SMALLEST' :
if ($aImg[0] <= $aImg[1]) {
$width = $KEEP_PROPORTIONS[1];
$height = round ($aImg[1] / (round ($aImg[0]/$KEEP_PROPORTIONS[1])));
} else {
$height = $KEEP_PROPORTIONS[1];
$width = round ($aImg[0] / (round ($aImg[1]/$KEEP_PROPORTIONS[1])));
}
break;
case 'DO_NOT_KEEP_PROPORTIONS':
if ($iCmpt !== 3 || !is_int ($KEEP_PROPORTIONS[2])) {
return false;
}
$width = $KEEP_PROPORTIONS[1];
$height = $KEEP_PROPORTIONS[2];
break;
}
}
$getImg = create_function ('$sFileNameFrom', 'return @imagecreatefrom'.$aTypes[$aImg[2]].'($sFileNameFrom);');
$saveImg = create_function ('$img, $sFileNameTo', 'return @image'.$aTypes[$aImg[2]].'($img, $sFileNameTo);');
$im = $getImg ($sFileNameFrom);
$image_p = imagecreatetruecolor($width, $height);
imagecolortransparent ($image_p, 0);
imagecopyresampled($image_p, $im, 0, 0, 0, 0, $width, $height, $aImg[0], $aImg[1]);
if ($saveImg ($image_p, $sFileNameTo)) {
return true;
} else {
return false;
}
}
}
}
}
imageResize ('transparent.gif', 'thumb_transparent.gif', array ('DO_NOT_KEEP_PROPORTIONS', 100, 100));
?>