Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Tworzenie miniatur, niby ok ale nie
deha21
post
Post #1





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Witam,
Mam skrypt który tworzy miniatury. Kiedyś skopiowałem go z forum i dostosowałem do swoich potrzeb. Teraz chciałbym go jeszcze raz przerobić.
Chodzi generalnie o to, żeby tworzył miniatury jpg/jpeg, gif, png a jeśli się da to nawet tiff i bmp.
Niestety po testach sprawdziłem, że obrazki które mają rozszerzenia pisane z dużej litery (np. *.PNG) nie chcą się przekształcać.
Druga sprawa to taka, że nawet jeśli przerobi plik png to mimo tego, że daje rozszerzenie png jest on jpg'iem. Jak to sprawdzić? Przeciągnąłem obrazek na pasek firefoxa i na tabie jest napisane "nazwa, JPEG, rozdzielczość". Dziwne dlaczego JPEG skoro konwertowałem PNG. Przy niekonwertowanych PNG oczywiście firefox wyświetla normalnie PNG.

Oto kod:
  1. <?
  2. $width=$_POST['width'];
  3. $height=$_POST['height'];
  4. $file=$_POST['file'];
  5.  
  6. $arr = pathinfo('../'.$file);
  7.  
  8. if($arr["extension"]=="gif" || $arr["extension"]=="jpg" || $arr["extension"]=="png" || $arr["extension"]=="jpeg")
  9. {
  10.  
  11. function resize($files, $new_w, $new_h, $save,$quality)
  12. {
  13. if (!is_readable($files))
  14. {
  15. return FALSE;
  16. }
  17. $info = @getimagesize($files);
  18. switch ($info['mime'])
  19. {
  20. case "image/gif":
  21. $files = imagecreatefromgif($files);
  22. break;
  23. case "image/jpeg":
  24. $files = imagecreatefromjpeg($files);
  25. break;
  26. case "image/png":
  27. $files = imagecreatefrompng($files);
  28. break;
  29. }
  30. $old_x = imageSX($files);
  31. $old_y = imageSY($files);
  32.  
  33. $th = ImageCreateTrueColor($new_w, $new_h);
  34. @imagecopyresampled($th, $files, 0, 0, 0, 0, $new_w, $new_h, $old_x, $old_y);
  35. @imagejpeg($th, $save,$quality);
  36. @imagedestroy($files);
  37. @imagedestroy($th);
  38. return TRUE;
  39. }
  40. resize('../'.$file, $width, $height, '../'.$file, 90);
  41. }
  42. ?>

Pozdrawiam
Go to the top of the page
+Quote Post
zzeus
post
Post #2





Grupa: Zarejestrowani
Postów: 441
Pomógł: 71
Dołączył: 3.09.2007
Skąd: wrocław

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


Jak tworzysz obrazek korzystasz z różnych funkcji (imagecreatefromjpeg, imagecreatefromgif, imagecreatefrompng), tak samo przy zapisywaniu musisz korzystać z różnych funkcji w zależności od typu zdjęcia (imagejpeg, imagepng, imagegif).
Jak chodzi o brak działania dla rozszerzeń pisanych dużymi literami, to: mb_convert_case()

Ten post edytował zzeus 1.09.2009, 13:36:52
Go to the top of the page
+Quote Post
deirathe
post
Post #3





Grupa: Zarejestrowani
Postów: 426
Pomógł: 32
Dołączył: 24.05.2007

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


A ja Ci polecam użycie tej klasy:
http://phpthumb.gxdlabs.com/
jest prosta w obsłudze i naprawdę daje sobie rade z takimi prostymi zadaniami na obrazkach (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
bim2
post
Post #4





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Pisze JPG bo zapisujesz obrazek w jpg
  1. @imagejpeg($th, $save,$quality);
Go to the top of the page
+Quote Post
mls
post
Post #5





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

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


Zamiast sprawdzać rozszerzenie pliku, sprawdź jego rzeczywisty typ - getimagesize
Go to the top of the page
+Quote Post
deha21
post
Post #6





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Dzięki.
Mam tylko problem z tym, żeby tworzyło PNG i GIF. Chciałem sprawdzić typ pliku i wtedy wywołać odpowiednią funkcję ale cos mi nie idzie.
Próbowałem to sprawdzanie zrobić przez switch (getimagesize, mime) oraz if (exif_imagetype).

Poza tym jestem ciekaw czy sprawdzanie rozszerzenia przez $pathinfo i ['extension'] jest prawidłowe. Bo czytałem, że są inne sposoby, np. przez getimagesize, exif_imagetype, image_type_to_mime_typ. Który jest najlepszy?
Go to the top of the page
+Quote Post
erix
post
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
przez $pathinfo i ['extension'] jest prawidłowe

Niekoniecznie. Najbezpieczniej sprawdzać MIME.
Go to the top of the page
+Quote Post
zzeus
post
Post #8





Grupa: Zarejestrowani
Postów: 441
Pomógł: 71
Dołączył: 3.09.2007
Skąd: wrocław

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


zobacz sobie też tutaj -> http://www.beldzio.com/bezpieczny-upload-plikow
Go to the top of the page
+Quote Post

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: 23.08.2025 - 18:32