<? function imagecopyresampledselection($filename, $desired_width, $desired_height, $bordersize, $position, $background, $border_color, $constrain_proportions) { // pobierz wymiary // jesli nie podano wymiarow docelowych, zmniejszamy obrazek 2 razy w stosunku do oryginalu $desired_width = $width / 2; $desired_height = $height / 2; } if($desired_width/$desired_height > $width/$height){ $new_width = $desired_width; $new_height = $height * ($desired_width / $width); } else{ $new_width = $width * ($desired_height / $height); $new_height = $desired_height; } // zmniejszanie zachowujac proprcje $old_ratio = $width/$desired_width; $new_ratio = $height/$desired_height; if($old_ratio > $new_ratio) { $new_width = $desired_width; $new_height = $height/$old_ratio; } else { $new_height = $desired_height; $new_width = $width/$new_ratio; } } // tworzenie obrazka $image_p = imagecreatetruecolor($new_width, $new_height); $image_f = imagecreatetruecolor($desired_width, $desired_height); // kolor ramki $border_color = imagecolorallocate($image_f, $ca[0], $ca[2], $ca[2]); } else{ $border_color = imagecolorallocate($image_f, 128, 128, 128); } // tlo obrazka $color = imagecolorallocate($image_p, $ca[0], $ca[2], $ca[2]); } else{ $color = imagecolorallocate($image_p, 255, 255, 255); } imagefill($image_f, 0, 0, $border_color); imagefill($image_p, 0, 0, $color); // jesli nie gif to sproboj jpg if(!$image = @imagecreatefromgif($filename)){ $image = @imagecreatefromjpeg($filename); } $image = imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); // Adjust position switch($position) { case("topleft"): $x = $bordersize; $y = $bordersize; break; case("topright"): $x = $new_width - $desired_width + $bordersize; $y = $bordersize; break; case("bottomleft"): $x = $bordersize; $y = $new_height - $desired_height + $bordersize; break; case("bottomright"): $x = $new_width - $desired_width + $bordersize; $y = $new_height - $desired_height + $bordersize; break; case("center"): $x = ($new_width - $desired_width) / 2 + $bordersize; $y = ($new_height - $desired_height) / 2 + $bordersize; break; } imagecopyresampled($image_f, $image_p, $bordersize, $bordersize, $x, $y, $desired_width - 2 * $bordersize, $desired_height - 2 * $bordersize, $desired_width - 2 * $bordersize, $desired_height - 2 * $bordersize); return $image_f; } $picture = $_GET['f']; $width = $_GET['w']; $height = $_GET['h']; $border = $_GET['b']; $quality = $_GET['q']; $background = $_GET['c']; $border_color = $_GET['bc']; $constrain_proportions = $_GET['cp']; if($quality == null){ $quality = 70; } if($picture != null){ $image_f = imagecopyresampledselection($picture, $width, $height, $border, "center", $background, $border_color, $constrain_proportions); imagejpeg($image_f, null, $quality); } ?>
a oto jego wynik (z zastosowaniem zachownaia proporcji):
klik
a tu wynik bez zachowania proporcji, z przycinaniem:
klik2
jak usunac czarne tlo?
i czy moge wywolywac skrypt np jako
<img src="adsad234rsfd234rffg">
zamiast
<img src="thumb.php?f=plik.jpg&h=300&w=300>
moglbym dekodowac link base64 ale wtedy powstaje problem jak zagniezdzic taki obrazek w htmlu?
ma ktos jakis pomysl co do obu tych problemow?
moze ktos pomoze?