Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Funkcje imagejpeg/png/gif
stefik4
post
Post #1





Grupa: Zarejestrowani
Postów: 176
Pomógł: 1
Dołączył: 18.11.2007

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


  1. function resample($filename, $width, $height){
  2. list($width_orig, $height_orig) = getimagesize($filename);
  3. if ($width && ($width_orig < $height_orig)) {
  4. $width = ($height / $height_orig) * $width_orig;
  5. } else {
  6. $height = ($width / $width_orig) * $height_orig;
  7. }
  8. $image_p = imagecreatetruecolor($width, $height);
  9.  
  10. $arr = array('imagecreatefromjpeg','imagecreatefrompng','imagecreatefromgif');
  11.  
  12. foreach ($arr as $val) {
  13. $image = @$val($filename);
  14. if ($image !== false) { break; }
  15. }
  16.  
  17. if ($image === false) {
  18. print('to nie jest zaden obrazek!');
  19. }
  20.  
  21. preg_match("'(.*)\.(.*)$'i", $fil
  22.  
  23. ename, $ext);
  24.  
  25. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
  26.  
  27.  
  28. $arr2 = array('imagejpeg','imagepng','imagegif');
  29. foreach ($arr2 as $val2) {
  30. $imagek = @$val2($image_p,"logo.".$ext[2], 100);
  31. if ($imagek !== false) {@$val2($image_p,"logo.".$ext[2], 100); break; }
  32. }
  33.  
  34. if ($imagek === false) {
  35. print('to nie jest zaden obrazek!');
  36. }
  37. }
  38.  
  39. resample('http://mobileinfo.xon.pl/smt/gf.png',130,130);
  40.  


Działa ok, tylko w obrazku tym stworzonym png, powinno być tło przeźroczyste: http://speedway-world.pl/logo.png, a nie jest ;/
Rozszerzenie jest w porządku png, ale typ obrazka jest jpg i stąd się bierze chyba błąd, że wciąż działa funkcja imagejpeg, a powinna imagepng.

Nie wiem już cos z tym zrobić.

Ten post edytował stefik4 23.12.2010, 14:26:15
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
lukaskolista
post
Post #2





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

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


to teraz przetlumacz te bledy i masz rozwiazanie. Blad nie jest w poczatkowej czesci skryptu, tylko w 15 linijce (na koncu bledu jest podana linijka)

Cytat
Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: 'http://mobileinfo.xon.pl/smt/gf.png' is not a valid JPEG file in /home/speedway/domains/speedway-world.pl/public_html/resize.php on line 15
Ten blad oznacza, ze do funkcji tworzacej obrazek z jpg nie podajesz obrazka jpg.

  1. header('Content-type: image/jpeg');
  2. header('Content-type: image/png');
  3. header('Content-type: image/gif');
dla odpowiedniego obrazka nalezy ustawic odpowiedni naglowek.

Co do petli to konstrukcja jest fatalna, do funkcji imagegif podajesz 3 argument, a ta funckja przyjmuje jedynie 2 argumenty... W dodatku tlumisz ten blad, co nie jest zadnym rozwiazaniem.

  1. if ($type === 'jpg') {
  2. imagejpeg(...);
  3. } else if ($type === 'png') {
  4. imagepng(...);
  5. } else if ($type === 'gif') {
  6. imagegif(...);
  7. }
i po problemie. Takie rozwiazanie po 1 jest duzo bardziej czytelne, po 2 jest jak najbardziej poprawne, a po 3 z pewnoscia skrypt wykona sie szybciej, niz Twoj

Ten post edytował lukaskolista 23.12.2010, 17:05:32
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: 4.10.2025 - 18:01