A to ja się podlącze - funkcje, które przeskalowują obrazek zachowując proporcje - pierwsa wg. wysokosci, druga wg. szerokosci.
Pierwszy arg - nazwa pliku zrodła, drugi - plik wynikowy, trzeci oczekiwana wysokość, czwarte jakość. Następna podobnie z tym, że trzecia to oczekiwana szerokośc. GD nie daję możliwośći zapisu gif-a tak więc jest konwertowany do jpg-a.
<?php
function create_thumb_hfixed($file_name_src, $file_name_dest, $height, $quality=100)
{
{
if ($est_dest['extension'] == \"gif\" || $est_dest['extension'] == \"jpg\")
{
$dest = imagecreatetruecolor($w, $h);
imageantialias($dest, TRUE);
} elseif ($est_dest['extension'] == \"png\")
{
$dest = imagecreatetruecolor($w, $h);
imageantialias($dest, TRUE);
} else
{
return FALSE;
}
switch($size[2])
{
case 1: //GIF
$src = imagecreatefromgif($file_name_src);
break;
case 2: //JPEG
$src = imagecreatefromjpeg($file_name_src);
break;
case 3: //PNG
$src = imagecreatefrompng($file_name_src);
break;
default:
return FALSE;
break;
}
imagecopyresampled($dest, $src, 0, 0, 0, 0, $w, $h, $size[0], $size[1]);
switch($size[2])
{
case 1:
case 2:
imagejpeg($dest,$file_name_dest, $quality);
break;
case 3:
imagepng($dest,$file_name_dest);
}
return TRUE;
}
return FALSE;
}
function create_thumb_wfixed($file_name_src, $file_name_dest, $weight,$quality=100)
{
{
if ($est_dest['extension'] == \"gif\" || $est_dest['extension'] == \"jpg\")
{
$dest = imagecreatetruecolor($w, $h);
imageantialias($dest, TRUE);
} elseif ($est_dest['extension'] == \"png\")
{
$dest = imagecreatetruecolor($w, $h);
imageantialias($dest, TRUE);
} else
{
return FALSE;
}
switch($size[2])
{
case 1: //GIF
$src = imagecreatefromgif($file_name_src);
break;
case 2: //JPEG
$src = imagecreatefromjpeg($file_name_src);
break;
case 3: //PNG
$src = imagecreatefrompng($file_name_src);
break;
default:
return FALSE;
break;
}
imagecopyresampled($dest, $src, 0, 0, 0, 0, $w, $h, $size[0], $size[1]);
switch($size[2])
{
case 1:
case 2:
imagejpeg($dest,$file_name_dest, $quality);
break;
case 3:
imagepng($dest,$file_name_dest);
}
return TRUE;
}
return FALSE;
}
?>