Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Towrzenie Ikonki, Operowanie na obrazkach.
Master Miko
post 24.02.2005, 09:22:57
Post #1





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

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


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


--------------------
Go to the top of the page
+Quote Post
Fipaj
post 24.02.2005, 10:28:24
Post #2





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

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


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??


--------------------
Go to the top of the page
+Quote Post
tiraeth
post 24.02.2005, 11:42:13
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


@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.
Go to the top of the page
+Quote Post
Fipaj
post 24.02.2005, 11:44:38
Post #4





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

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


Ja tylko podałem przypuszczenie


--------------------
Go to the top of the page
+Quote Post
Master Miko
post 24.02.2005, 13:17:28
Post #5





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

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


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. ?>


--------------------
Go to the top of the page
+Quote Post
tiraeth
post 25.02.2005, 09:26:44
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


  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
Go to the top of the page
+Quote Post
Master Miko
post 25.02.2005, 20:03:09
Post #7





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

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


Działa poprawnie, bardzo dziękuję

Powiedz mi tylko do czego służy funkcja: imagejpeg($tempImg, '', 75);

Ten post edytował Master Miko 25.02.2005, 20:44:45


--------------------
Go to the top of the page
+Quote Post
tiraeth
post 26.02.2005, 10:32:53
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


  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
Go to the top of the page
+Quote Post
Master Miko
post 26.02.2005, 20:34:46
Post #9





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

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


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


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 6.07.2025 - 00:27