też coś znalazłem:
function resize($nazwa_pliku, $wysokosc, $szerokosc, $czy_zachowac_skale)
{
$ic = imagecreatefrompng($nazwa_pliku);
if ( $ic === false )
{
return 'Miniaturka nie stworzona!';
}
$is = getimagesize($nazwa_pliku); // [0] - szerokość, [1] - wysokość //-----------------------------
switch ( $czy_zachowac_skale )
{
case false: // zmniejszanie bezpośrednio do szerokosc/wysokosc
$nts = imagecreatetruecolor($wysokosc, $szerokosc);
imagecopyresized($nts, $ic, 0, 0, 0, 0, $szerokosc, $wysokosc, $is[0], $is[1]);
break;
default: // zmniejszanie z zachowaniem skali, aż do osiągnięcia co najmniej szerokosc/wysokosc
$width = $is[0];
$height = $is[1];
$ratio = $is[0] / $szerokosc;
if ( $ratio > 1 )
{
$width = $szerokosc;
$height = intval($is[1
] / $ratio); }
$ratio = $height / $wysokosc;
if ( $ratio > 1 )
{
$width = intval($width / $ratio); $height = $wysokosc;
}
$nts = imagecreatetruecolor($width, $height); // utworzenie obrazka o podanych rozmiarach z czarnym tłem
imagecopyresized($nts, $ic, 0, 0, 0, 0, $width, $height, $is[0], $is[1]); break;
}
//-----------------------------
imagepng($nts, 'nowy.png');
imagedestroy($nts);
}
resize('example.png', 180, 160, false);
//albo
resize('example.png', 180, 160, true);
dodatkowo masz możliwość pomniejszania proporcjonalnego lub bezpośrednio do ustalonych wartości.