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%)
-----


  1. $arr2 = array('imagejpeg','imagepng','imagegif');
  2. foreach ($arr2 as $val2) {
  3. $imagek = @$val2($image_p,"logo.".$ext[2], 100);
  4. if ($imagek !== false) {@$val2($image_p,"logo.".$ext[2], 100); break; }
  5. }
  6.  
  7. if ($imagek === false) {
  8. print('to nie jest zaden obrazek!');
  9. }

ten fragment kodu jest zle. Do tego stosujesz jakas dziwna konstrukcje, ale pominmy to. Po co uzywasz @? Nie tlum bledow, to zobaczysz co jest zle.

  1. @$val2($image_p,"logo.".$ext[2], 100)
nie przeczytales dokumentacji funkcji imagegif, (odsylam do niej http://php.net/manual/en/function.imagegif.php). Wylacz tlumienie bledow, zobacz co jest zle i popraw. Dodatkowo na poczatku skryptu mozesz umiescic linijke
co ulatwi sprawe. Jak juz dojdziesz do wniosku, ze petla w ktorej tworzysz obrazki nie ma sensu, to popraw ten skrypt i pokaz nam poprawiony. Swoja droga w sieci jest masa gotowcow, nie wiem czemu tworzysz takie "cudo".

Edit:
zamiast print uzywaj echo, zamiast " uzywaj '

Ten post edytował lukaskolista 23.12.2010, 15:28:23
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: 2.10.2025 - 22:41