<?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)); ?>