witam
napisalem prostą funkcję w php do skalowania obrazów... niestety nie wiedziec czemu nie dziala to poprawnie pomimo tego, ze caly kod wyglada na poprawny... efekt wykokania funkcji jest wyswietlenie milionow krzakow na stronie i brak zapisanego nowego, przeskalowanego obrazka.
funkcja:
function przeskaluj_zdjecie($plik, $nowa_sz, $nowa_w, $plik_2){
switch ($info['mime'])
{
case "image/gif":
$plik = imagecreatefromgif($plik);
break;
case "image/jpeg":
$plik = imagecreatefromjpeg($plik);
break;
case "image/png":
$plik = imagecreatefrompng($plik);
break;
}
$plik_sz = imageSX($plik);
$plik_w = imageSY($plik);
if ($plik_sz > $plik_w)
{
if ($plik_sz > $nowa_sz){
$plik_2_sz = $nowa_sz;
$plik_2_w = $nowa_sz*($plik_sz/$plik_w);
}else{
$plik_2_sz = $plik_sz;
$plik_2_w = $plik_w;
}
}
if ($plik_sz < $plik_w)
{
if ($plik_sz > $nowa_sz){
$plik_2_sz = $nowa_sz;
$plik_2_w = $nowa_sz*($plik_sz/$plik_w);
}else{
$plik_2_sz = $plik_sz;
$plik_2_w = $plik_w;
}
if ($plik_w > $nowa_w){
$plik_2_sz = $nowa_w*($plik_sz/$plik_w);
$plik_2_w = $nowa_w;
}
}
if ($plik_sz == $plik_w)
{
$plik_2_sz=$nowa_w;
$plik_2_w=$nowa_w;
}
$nowy_plik = ImageCreateTrueColor($plik_2_sz, $plik_2_w);
@imagecopyresampled($nowy_plik, $plik, 0, 0, 0, 0, $plik_2_sz, $plik_2_w, $plik_sz, $plik_w);
@imagejpeg($nowy_plik, $plik2, '90');
@imagedestroy($plik);
@imagedestroy($nowy_plik);
return TRUE;
}
a wywoluje:
przeskaluj_zdjecie("fotka.jpg", "600", "480", "fotka_2.jpg");
bardzo prosze o wasza pomoc
Ten post edytował kkuubbaa88 26.03.2010, 19:28:42