<?php
public static function resize($fileName, $w, $h, $jpgQuality=80, $prop=true, $pad=true, $bgColor='')
{
// bg color is an array as rgb code
if($bgColor == '') $bgColor = array(255, 255, 255);
$dims=getimagesize($fileName);
if($prop){
// calculate proportions
if(($dims['0']/$w)>($dims['1']/$h)){
// width rules
$newW = $w;
$newH = (($new*$subject)/$orig);
}else{
//height rules
$newH = $h;
$newW = (($new*$subject)/$orig);
};
if($pad){
if($newW < $w){
// have to pad vertically
$innerW = $newW;
$newW = $w;
$lPos = (($w-$innerW)/2);
}else{
$lPos = 0;
$innerW = $w;
}
if($newH < $h){
// have to pad horizontally
$innerH = $newH;
$newH = $h;
$tPos = (($h-$innerH)/2);
}else{
$tPos = 0;
$innerH = $h;
}
//echo 'innerH: '.$innerH.', innerW: '.$innerW.', newH: '.$newH.', newW: '.$newW.', tpos: '.$tPos.', lPos: '.$lPos.'<br />';
};
}else{
$newW = $w;
$newH = $h;
}
$ext = substr($fileName, strlen($fileName)-4);
//echo $fileName.'<br />';
switch($ext){
case'.jpg':
global $jpg_quality;
$image = imagecreatefromjpeg($fileName);
$image_p = imagecreatetruecolor($newW, $newH);
$color = imagecolorallocate($image_p, $bgColor[0], $bgColor[1], $bgColor[2]);
imagefill($image_p, 0, 0, $color);
if(!$pad) imagecopyresampled($image_p, $image, 0, 0, 0, 0, $newW, $newH, $dims['0'], $dims['1']);
else imagecopyresampled($image_p, $image, $lPos, $tPos, 0, 0, $innerW, $innerH, $dims['0'], $dims['1']);
//echo 'image: '.$image_p.', '.$fileName.' , '.$jpgQuality.' , '.$w. ' , '.$h.'<br />';
$image = imagejpeg($image_p, $fileName, $jpgQuality);
break;
case'.gif':
$image = imagecreatefromgif($fileName);
$image_p = imagecreatetruecolor($newW, $newH);
$color = imagecolorallocate($image_p, $bgColor[0], $bgColor[1], $bgColor[2]);
imagefill($image_p, 0, 0, $color);
if(!$pad) imagecopyresampled($image_p, $image, 0, 0, 0, 0, $newW, $newH, $dims['0'], $dims['1']);
else imagecopyresampled($image_p, $image, $lPos, $tPos, 0, 0, $innerW, $innerH, $dims['0'], $dims['1']);
$image = imagegif($image_p,$fileName);
break;
case'.png':
$image = imagecreatefrompng($dest);
$image_p = imagecreatetruecolor($newW, $newH);
$color = imagecolorallocate($image_p, $bgColor[0], $bgColor[1], $bgColor[2]);
imagefill($image_p, 0, 0, $color);
if(!$pad) imagecopyresampled($image_p, $image, 0, 0, 0, 0, $newW, $newH, $dims['0'], $dims['1']);
else imagecopyresampled($image_p, $image, $lPos, $tPos, 0, 0, $innerW, $innerH, $dims['0'], $dims['1']);
$image = imagepng($image_p,$fileName);
break;
};
}