I have recently created a new image resizer in PHP.
This not only scale and resize with an amazing quality, but I created some parameters to give effects as you can see in this image.
upImg('','ds.jpg',80,80,'namefile',0,0,256,0);
function upImg($file,$urlfile,$sizew,$sizeh,$uploadfile,$squared=0,$squared2=0,$pal=256,$inv=0){
$uploadfile.=".gif";
if($urlfile!=""){
$file = array("size" => 0, "type" => "");
$file["size"] = strlen(file_get_contents($urlfile));
$file["type"] = strtolower(str_ireplace(".", "", substr($urlfile, -4)));
}
if($file["size"]>200 && ($file["size"]/1024)<3000){
$ft=str_ireplace("image/","",$file["type"]);
if ($ft=="gif" || $ft=="png" || $ft=="jpeg" || $ft=="pjpeg" || $ft=="jpg"){
if($urlfile==""){move_uploaded_file($file["tmp_name"],$uploadfile);}
else{file_put_contents($uploadfile, file_get_contents($urlfile));}
if ($ft=="gif"){$simg = ImageCreateFromGIF($uploadfile);}
if ($ft=="png"){$simg = ImageCreateFromPNG($uploadfile);}
if ($ft=="jpeg" || $ft=="pjpeg" || $ft=="jpg"){$simg = ImageCreateFromJPEG($uploadfile);}
$swdt = imagesx($simg);
$shgt = imagesy($simg);
if($swdt<$sizew){$sizew=$swdt;}
if($shgt<$sizeh){$sizeh=$shgt;}
$dimg = ImageCreate($sizew, $sizeh);
$rX = $swdt / $sizew;
$rY = $shgt / $sizeh;
if($sizeh>$shgt*($sizew/$swdt)){
$rX = $swdt /($swdt *($sizeh/$shgt));
$Rx=((($swdt*($sizeh/$shgt))-$sizew)/2)*$rX;
}
if($sizeh<$shgt*($sizew/$swdt)){
$rY = $shgt /($shgt*($sizew/$swdt));
$Ry=((($shgt*($sizew/$swdt))-$sizeh)/2)*$rY;
}
imagetruecolortopalette($simg, false, $pal);
ImagePaletteCopy($dimg, $simg);
$w = 0;
for ($y = 0; $y < $sizeh; $y++) {
$ow = $w; $w = round(($y + 1) * $rY+$Ry);
$t = 0;
for ($x = 0; $x < $sizew; $x++) {
$r = $g = $b = $squared2; $a = $squared;
$ot = $t; $t = round(($x + 1) * $rX+$Rx);
for ($u = 0; $u < ($w - $ow); $u++) {
for ($p = 0; $p < ($t - $ot); $p++) {
$c = ImageColorsForIndex($simg, ImageColorAt($simg, $ot + $p, $ow + $u));
$r += $c['red'];
$g += $c['green'];
$b += $c['blue'];
$a++;
}
}
ImageSetPixel($dimg, $x, $y, ImageColorClosest($dimg, abs(($inv*256)-($r / $a)), abs(($inv*256)-($g / $a)), abs(($inv*256)-($b / $a))));
}
}
imageGif($dimg, $uploadfile);
imagedestroy($simg);
imagedestroy($dimg);
return $uploadfile;
}
else{echo "Error: The file must be a GIF, PNG, or JPG!";}
}
else{echo "Error: File Size incorrect!";}
}