Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Towrzenie Ikonki
Forum PHP.pl > Forum > Gotowe rozwiązania
Master Miko
Witam skorzystałem z innych skryptów, rad i stworzyłem ten skrypt:


  1. <?php
  2.  
  3.  
  4.  header(&#092;"Content-type: image/jpg\");
  5.  $imgName = $_GET['dir'];
  6.  $size = $_GET['scale'];
  7.  
  8. if(!($img = imagecreatefromjpeg($imgName))){
  9. echo(&#092;"Nie Można otworzyć Pliku - $imgName\");
  10. return false;
  11. }
  12.  
  13. $img_w = imagesx($img);
  14. $img_h = imagesy($img);
  15. $ratio = $img_w / $img_h;
  16.  
  17. if($ratio > 1){
  18. $new_img_w = $size;
  19. $new_img_h = ($size / $ratio);
  20. } else {
  21. $new_img_w = ($size * $ratio);
  22. $new_img_h = $size;
  23. }
  24. $tempImg = imagecreatetruecolor($new_img_w, $new_img_h);
  25. imagecopyresampled($tempImg, $img, 0, 0, 0, 0, $new_img_w, $new_img_h, $img_w, $img_h);
  26. $name = substr($imgName, 0, strlen($imgName) - 4); // dla usuwania końcówki: .jpg
  27. $name = $name.&#092;"small.jpg\";
  28. imagejpg($tempImg, $name);
  29. imagedestroy($tempImg);
  30.  
  31.  
  32.  
  33. ?>


Aby pojawił się obraz przeskalowany, powinno się podawać link:
icon.php?dir=folder/nazwa.jpg&scale=200
Czyli utworzył by miniaturkę obrazu o ścieżce folder/nazwa.jpg o szerokości 200.

Problem w tym, że skrypt nie działa worriedsmiley.gif
Fipaj
Sprawdziłem ten skrypt na ZA.PL - nie działa, bo ZA wstawia reklamę HTML i psuje JPG...


Czy trzymasz ten plik na www.za.pl??
tiraeth
@Fipaj... błędna odpowiedź...

problem może tkwić w tym, że nie można utworzyć pliku o wymiarach np. 88.2192314x81.2105918.. zaokrąglij wynik.
Fipaj
Ja tylko podałem przypuszczenie
Master Miko
Cytat(Tiraeth @ 2005-02-24 10:42:13)
problem może tkwić w tym, że nie można utworzyć pliku o wymiarach np. 88.2192314x81.2105918.. zaokrąglij wynik.

Tworzyłem wcześniej ikonki na podstawie tej funkcji i działało dla tych ustawień.

Nie, mam płatny hosting bez reklam a poza tym w za.pl nie ma biblioteki gd (chyba)

Probem może natomist polegać na tym, że skrypt tworzy ikonkę i zapisuje nazwaobrazka.jpg jako nazwaobrazkasmall.jpg

To że tworzy obrazek, nie znaczy, że go pokazuje worriedsmiley.gif

Potrzebna mi modyfikacja tej funkcji, aby to plik był obrazkiem i skalował go, a nie TYLKO skalował.

Piszę jeszcze raz, że jest tu potrzebna funkcja, której nie znam, aby strona pokazała się jako obrazek, ściślej mówiąc ikonka.

Aby przywołać ikonkę używam

  1. <?php
  2.  
  3. echo &#092;"<img src=\"icon.php?dir=folder/nazwa.jpg&scale=200\">\";
  4.  
  5. ?>
tiraeth
  1. <?php
  2.  header(&#092;"Content-type: image/jpg\");
  3.  $imgName = $_GET['dir'];
  4.  $size = $_GET['scale'];
  5.  
  6. if(!($img = imagecreatefromjpeg($imgName))){
  7. echo(&#092;"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); // dla usuwania końcówki: .jpg
  25. $name = $name.&#092;"small.jpg\";
  26. imagejpeg($tempImg, $name); # tutaj dodajemy znowu imagejpeg aby wyswietlilo obrazek
  27. Header('Content-type: image/jpeg'); # tego brakowało
  28. imagejpeg($tempImg, '', 75);
  29. imagedestroy($tempImg);
  30. ?>

wiem dlaczego skrypt nie działał poprawnie.... miałeś błąd w funkcji imagejpg powinno być imagejpeg
Master Miko
Działa poprawnie, bardzo dziękuję

Powiedz mi tylko do czego służy funkcja: imagejpeg($tempImg, '', 75);
tiraeth
  1. <?
  2. Header('Content-type: image/jpeg');
  3. imagejpeg($tempImg, '', 75);
  4. ?>

1. Wysyłamy nagłówek informując, że ten plik jest obrazkiem (ten w którym znajduje się ten skrypt)
2. tworzymy obrazek JPEG z $tempImg bez zapisu o jakości 75%, czyli jeżeli nie zapiszemy obrazka (nie podamy jego nazwy w 2 parametrze) to pokaże na ekranie jego zawartość binarną, chyba, że wyślemy nagłówek, że to obrazek i wtedy pokaże nam obrazek smile.gif
Master Miko
Cytat(Tiraeth @ 2005-02-26 09:32:53)
  1. <?
  2.     Header('Content-type: image/jpeg');
  3.     imagejpeg($tempImg, '', 75);
  4. ?>

1. Wysyłamy nagłówek informując, że ten plik jest obrazkiem (ten w którym znajduje się ten skrypt)
2. tworzymy obrazek JPEG z $tempImg bez zapisu o jakości 75%, czyli jeżeli nie zapiszemy obrazka (nie podamy jego nazwy w 2 parametrze) to pokaże na ekranie jego zawartość binarną, chyba, że wyślemy nagłówek, że to obrazek i wtedy pokaże nam obrazek smile.gif

aha Teraz rozumiem dzięki
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.