Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Skalowanie obrazka jpg do wykorzystania z FPDF
danon198901
post
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 26.09.2012

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


Witam,
na początek dodam, że uczę się dopiero języka PHP (na podstawie informacji zaczerpniętych z google oraz książki).
Piszę stronkę dzięki której będę mógł generować dokumenty PDF (ulotki itp). Problem mam następujący, że użytkownik może:
a ) Nie dodawać loga do dokumentu PDF
b ) Dodać wbudowane logo
c ) Wgrać własne logo, które zostanie dodane do dokumentu PDF

Z A i B problemu nie ma, jednak problem pojawia się, gdy użytkownik wrzuci własne zdjęcie, które będzie większe niż ja założyłem...wtedy wyjdzie on za ramy dokomentu, a tego nie chcę. Nie chcę również, narzucić maksymalnej wielkości zdjęcia, które użytkownik wgra. Po prostu jeśli rozdzielczość jest większa powiedzmy od 150x150 px to następuje skalowanie.

W internecie znalazłem najbardziej przemawiający do mnie skrypt php, wg. którego pobierane jest zdjęcie, następuje skalowanie i zapisanie zmienionego obrazka. Sprawdziłem, błędu nie wyrzuca, ale również nie skaluje:(

Poniżej prezentuje znaleziony kod (ścieżka jest moja):

  1. <?php
  2.  
  3. $plik = 'obrazki/slonecznik.jpeg';
  4.  
  5. function resize( $plik, $szerokosc = 55 ) {
  6.  
  7. $i = explode('.', $plik);
  8. $rozszerzenie = end($i);
  9.  
  10. if($rozszerzenie !== 'jpeg' &&
  11. $rozszerzenie !== 'gif' &&
  12. $rozszerzenie !== 'png') {
  13. return false;
  14. }
  15.  
  16. list($img_szer, $img_wys) = getimagesize($plik);
  17.  
  18. $proporcje = $img_wys / $img_szer;
  19. $wysokosc = $szerokosc * $proporcje;
  20.  
  21. $canvas = imagecreatetruecolor($szerokosc, $wysokosc);
  22.  
  23. switch($rozszerzenie) {
  24. case 'jpeg':
  25. $org = imagecreatefromjpeg($plik);
  26. break;
  27. case 'gif':
  28. $org = imagecreatefromgif($plik);
  29. break;
  30. case 'png':
  31. $org = imagecreatefrompng($plik);
  32. break;
  33. }
  34.  
  35. imagecopyresampled($canvas, $org, 0, 0, 0, 0,
  36. $szerokosc, $wysokosc, $img_szer, $img_wys);
  37.  
  38. if(imagejpeg($canvas, $plik, 70)) {
  39. return true;
  40. } else {
  41. return false;
  42. }
  43. }
  44. ?>


Jakieś sugestie? (IMG:style_emoticons/default/worriedsmiley.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
danon198901
post
Post #2





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 26.09.2012

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


Cytat
albo dla testu umieść obrazek w tym samym katalogu co skrypt i w funkcji jako pierwszy parametr użyj tylko nazwy pliku.

Już wczoraj próbowałem i kończy się to tymi samymi komunikatami:(

Cytat
Jeśli nie jesteś pewny ścieżki relatywnej do pliku to najlepiej zacznij od użycia ścieżki absolutnej do pliku


Stosując: resize('C:\xampp\htdocs\obrazki\sloneczniki.jpeg', 150);
również dostaję te warningi.

Co do file exist...wcześniej mogę sobie wywołać <img src... /> i obrazek mi się wyświetli...czyli istnieje i jest 'widoczny'.


Cytat
A dla pewności zawsze możesz użyć file_exists


Odwołując się do funkcji file_exist:
  1. <?php
  2.  
  3. function resize( $plik, $szerokosc) {
  4.  
  5.  
  6. if(file_exists($plik))
  7. {
  8.  
  9. echo 'Plik istnieje';
  10.  
  11. $i = explode('.', $plik);
  12. $rozszerzenie = end($i);
  13.  
  14. if($rozszerzenie !== 'jpeg' &&
  15. $rozszerzenie !== 'gif' &&
  16. $rozszerzenie !== 'png') {
  17. return false;
  18. }
  19.  
  20. list($img_szer, $img_wys) = getimagesize($plik);
  21.  
  22. $proporcje = $img_wys / $img_szer;
  23. $wysokosc = $szerokosc * $proporcje;
  24.  
  25. $canvas = imagecreatetruecolor($szerokosc, $wysokosc);
  26.  
  27. switch($rozszerzenie) {
  28. case 'jpeg':
  29. $org = imagecreatefromjpeg($plik);
  30. break;
  31. case 'gif':
  32. $org = imagecreatefromgif($plik);
  33. break;
  34. case 'png':
  35. $org = imagecreatefrompng($plik);
  36. break;
  37. }
  38.  
  39. imagecopyresampled($canvas, $org, 0, 0, 0, 0,
  40. $szerokosc, $wysokosc, $img_szer, $img_wys);
  41.  
  42. if(imagejpeg($canvas, $plik, 70)) {
  43. return true;
  44. } else {
  45. return false;
  46. }
  47. }
  48.  
  49. else echo 'Plik nie istnieje';
  50. }
  51.  
  52. resize('obrazki/sloneczniki.jpeg', 150);
  53.  
  54. ?>


Moim oczom ukazuje się informacja "Plik nie istnieje" (IMG:style_emoticons/default/nerdsmiley.png)


@EDIT
No nie wierzę...sprawdzałem poprawność ścieżki kilkakrotnie...a okazuje się, że w skrypcie miałem nazwę sloneczniki, a plik nazywa sie slonecznik. Ehhh, ale wstyd:P

Dzięki za pomoc @wladimirec(IMG:style_emoticons/default/wink.gif) Tematu jeszcze nie zamykam, bo mam kilka zamysłów co do obrazków w php i być może odwołam się jeszcze w tym temacie.

Ten post edytował danon198901 6.10.2012, 09:49: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: 15.09.2025 - 11:42