Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [GD]Funkcja tworząca ikonki .jpg, Adaptacja do .gif i .png
Master Miko
post
Post #1





Grupa: Zarejestrowani
Postów: 530
Pomógł: 0
Dołączył: 15.01.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Witam, oto skrypt tworzący ikonki (obrazki o mniejszych wymiarach).

Podaje się 2 wartości:

dir - ścieżka do pliku
scale - skala pliku (długość boku małej ikonki)

skrypt inicjuje się przez:

  1. <?php
  2.  
  3. <img src="icon.php?dir=(sciezka)&scale=(skala)" alt="Opis...">
  4.  
  5. ?>


Skrypt działa, bardzo fajnie, ale jak dostosować go do tego, żeby również przetwarzał pliki png i gif?
Skrypt został napisany przeze mnie z pomocą książek i for (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

PS. chciałbym, aby jeśli jakiś plik nie istnieje, zamist normalnego krzyżyka, pojawiał się przeze mnie ustalony plik obrazkowy
PS2. Każdy może użyć tego pliku
PS3. Jakie zabezpieczenia polecilibyście zastosować?



Plik icon.php:
  1. <?php
  2.  header("Content-type: image/jpg");
  3.  $imgName = $_GET['dir']; // Pobiera plik razem ze ścieżką
  4.  $size = $_GET['scale']; // Jaka skala ma być - $size wyznacza długość boku, a wysokość jest dostosowana.
  5.  
  6. if(!($img = imagecreatefromjpeg($imgName))){
  7. echo("Nie Można otworzyć Pliku - $imgName");
  8. return false;
  9. }
  10.  
  11. $img_w = imagesx($img);
  12. $img_h = imagesy($img);
  13. $ratio = $img_w / $img_h;
  14.  
  15. if($ratio > 1){
  16. $new_img_w = $size;
  17. $new_img_h = ($size / $ratio);
  18. } else {
  19. $new_img_w = ($size * $ratio);
  20. $new_img_h = $size;
  21. }
  22. $tempImg = imagecreatetruecolor($new_img_w, $new_img_h);
  23. imagecopyresampled($tempImg, $img, 0, 0, 0, 0, $new_img_w, $new_img_h, $img_w, $img_h);
  24. $name = substr($imgName, 0, strlen($imgName) - 4);
  25. $name = $name."small.jpg";
  26. imagejpeg($tempImg, $name);
  27. Header('Content-type: image/jpeg');
  28. imagejpeg($tempImg, '', 50);
  29. imagedestroy($tempImg);
  30. ?>


Proszę o pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
crash
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----


Nudziło mi się...
  1. <?php
  2.  
  3. $imgName = $_GET[ 'dir' ];  // Pobiera plik razem ze ścieżką
  4. $size = $_GET[ 'scale' ]; // Jaka skala ma być - $size wyznacza długość boku, a wysokość jest dostosowana.
  5.  
  6. $ext  = pathinfo( $imgName, PATHINFO_EXTENSION );
  7.  
  8. if( !function_exists( $func = 'imagecreatefrom' . ( $ext == 'jpg' ? 'jpeg' : $ext ) ) or !( $img = $func( $imgName ) ) )
  9. {
  10.  die( 'Nie Można otworzyć Pliku - ' . $imgName );
  11. }
  12.  
  13. $imgW = imagesx( $img );
  14. $imgH = imagesy( $img );
  15.  
  16. $ratio = $imgW / $imgH;
  17.  
  18. if( $ratio > 1 )
  19. {
  20.  $newImgW = $size;
  21.  $newImgH = ( $size / $ratio );
  22. }
  23. else
  24. {
  25.  $newImgW = ( $size * $ratio );
  26.  $newImgH = $size;
  27. }
  28.  
  29. $tempImg = imagecreatetruecolor( $newImgW, $newImgH );
  30.  
  31. imagecopyresampled( $tempImg, $img, 0, 0, 0, 0, $newImgW, $newImgH, $imgW, $imgH );
  32.  
  33. $name = basename( $imgName, '.' . $ext );
  34. $name = $name . 'small.jpg';
  35.  
  36. header( 'Content-type: image/jpeg' );
  37.  
  38. imagejpeg( $tempImg, $name );
  39. imagejpeg( $tempImg, '', 50 );
  40.  
  41. imagedestroy( $tempImg );
  42.  
  43. ?>
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 12:30