Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] obrazek - skalowanie i kadrowanie
Forum PHP.pl > Forum > Przedszkole
kazag
Witam,
mam plik robiący mi miniatury z obrazka w locie, chciałbym jednak, aby ten plik zrobił miniaturę obrazka, a następnie przyciął ją do odpowiedniej wysokości. Np. jeżeli obrazek ma 500x1000px to miniatura zmniejszy go do 100x200px a następnie niechaj go zetnie do 100x50px, czyli zwyczajnie obetnie 3/4 obrazka od dołu.

Obecnie mój skrypt robi jednak jedynie miniatury:
  1. <?php
  2. $obrazek="img/arts/".$_GET['o'];
  3.  
  4. $ms=$_GET['ms'];
  5. $mw=$_GET['mw'];
  6.  
  7. if(!$ms)
  8. $ms=100;
  9. if(!$mw)
  10. $mw=100;
  11.  
  12. $rozmiar=GetImageSize($obrazek);
  13. $szer=$rozmiar[0];
  14. $wys=$rozmiar[1];
  15.  
  16. //skaluje
  17. $x=$ms/$szer;
  18. $mw=$wys*$x;
  19.  
  20. $typ=basename($obrazek);
  21. $pliki=explode(".", $typ);
  22.  
  23. if($pliki[1]=='png')
  24. {
  25. $zrd = ImageCreateFromPng($obrazek);
  26. $prz = imagecreatetruecolor($ms,$mw);
  27. imagecopyresized($prz, $zrd, 0, 0, 0, 0, $ms, $mw, $szer, $wys);
  28. header('Content-type: image/png');
  29. imagepng($prz);
  30. ImageDestroy($zrd);
  31. ImageDestroy($prz);
  32. }
  33. else
  34. {
  35. $zrd = ImageCreateFromJpeg($obrazek);
  36. $prz = imagecreatetruecolor($ms,$mw);
  37. imagecopyresized($prz, $zrd, 0, 0, 0, 0, $ms, $mw, $szer, $wys);
  38. header('Content-type: image/jpeg');
  39. ImageJpeg($prz, null, 100);
  40. ImageDestroy($zrd);
  41. ImageDestroy($prz);
  42. }
  43. ?>


Nie mam pojęcia, jak nakazać mu zamiast wyświetlania tego obrazka zrobienia na nim kolejnej operacji, czyli skadrowania... (samo kadrowanie wiem już jak wykonać).
erix
Cytat
Nie mam pojęcia, jak nakazać mu zamiast wyświetlania tego obrazka zrobienia na nim kolejnej operacji, czyli skadrowania...

Dodaj odpowiednie linijki przed wysłaniem do przeglądarki. ;] No prościej nakierować się chyba już nie da.
kazag
  1. <?php
  2. $zrd = ImageCreateFromPng($obrazek);
  3. $prz = imagecreatetruecolor($ms,$mw);
  4. [b]$nowy[/b] = imagecopyresized($prz, $zrd, 0, 0, 0, 0, $ms, $mw, $szer, $wys);
  5. [b]imagecopy($prz, [b]$zrd[/b], 0, 0, 0, 0, $ms, $mw);[/b]
  6. header('Content-type: image/png');
  7. imagepng($prz);
  8. ImageDestroy($zrd);
  9. ImageDestroy($prz);
  10. ?>


Nic nie daje, jeśli nie dodam $nowy, to skalowanie nie jest uwzglednianie, jeśli natomiast dodam nowy i przy imagecopy zmienie $zrd, czyli zrodlo, na $nowy, to również nic to nie daje, wywala błąd : Warning: imagecopy(): supplied argument is not a valid Image resource in D:\www\xampp\htdocs\et\miniatura.php on line 28
erix
A oba obrazki faktycznie istnieją? Numery linijek się przecież nie zgadzają, to ciężko gdybać.
kazag
@erix

Eh eh, ale dzięki, zrobiłem ;p
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.