Witam,
Popełniłem skrypt który ma za zadanie dopasować ładowane zdjęcie do odpowiedniej rozdzielczości. W pierwszej fazie leci skalowanie z zachowaniem proporcji wysokość/szerokość a później jeśli coś po katach wystaje leci kadrowanie z pozycji x czy tez y o przypadkowej mniejszej wartości roznicy. W wiekszosci przypadkow skrypt dzala jednak jest gdzes jest blad i nie moge go znalesc a objawia sie tym ze czasem zdjecia w swojej dolnej czesci sa sciete o jakas przypadkowa wysokosc.
$pic = @imagecreatefrompng($id_thumb);
$mega = $mega_path;
$width = imagesx($pic);
$height = imagesy($pic);
$cat_x = 0;
$cat_y = 0;
if($height == $width) {
$Twidth = 330;
$Theight = $Twidth * $height / $width;
$Theight = ceil($Theight); $cat_y = rand(0
,$Theight-286
); } else {
if($height < $width) {
$Theight = 286;
$Twidth = $Theight * $width / $height;
if($Twidth < 330) {
$Twidth = 330;
$Theight = $Twidth * $height / $width;
$Theight = ceil($Theight); } else {
$cat_x = rand(0
,$Twidth-330
); }
} else {
$Twidth = 330;
$Theight = $Twidth * $height / $width;
$Theight = ceil($Theight); if($Theight < 286) {
$Theight = 286;
$Twidth = $Theight * $width / $height;
} else {
$cat_y = rand(0
,$Theight-286
); }
}
}
$thumb = @imagecreatetruecolor (330, 286);
imagealphablending($thumb, false);
imagesavealpha($thumb,true);
$transparent = imagecolorallocatealpha($thumb, 255, 255, 255, 127);
imagefilledrectangle($thumb, 0, 0, $Twidth, $Theight, $transparent);
imagecopyresampled($thumb, $pic, 0, 0, $cat_x, $cat_y, $Twidth, $Theight, $width, $height);
imagepng($thumb,$mega);
imagedestroy($thumb);
Za pomoc i zainteresowaie z gory dziekuje i pozdrawiam
Ten post edytował fernet 10.11.2011, 01:20:16