Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z tworzeniem miniatur - imagepng
Forum PHP.pl > Forum > Przedszkole
Agape
Mam funkcje która tworzy miniaturki z JPG, GIF i PNG. Wszystkie formaty działają poprawnie, niestety przy tworzeniu PNG tworzy nieprawidłowy plik, który się nie wyświetla ani na stronie ani lokalnie. Linijka 34.

  1. function miniaturka($folder, $plik,$max_x,$max_y, $kompresja){
  2. /*
  3. * source - obrazek jpeg
  4. * max_x - maksymalna szerokosc pomniejszonego obrazka
  5. * max_y - maksymalna dlugosc pomniejszonego obrazka
  6. */
  7. $source=$folder.$plik;
  8. if(exif_imagetype($source) == IMAGETYPE_JPEG){
  9. $img_src = imagecreatefromjpeg($source);
  10. }elseif(exif_imagetype($source) == IMAGETYPE_GIF){
  11. $img_src = imagecreatefromgif($source);
  12. }elseif(exif_imagetype($source) == IMAGETYPE_PNG){
  13. $img_src = imagecreatefrompng($source);
  14. }else{
  15. unlink($source);
  16. die('Zly typ pliku. Akceptowane formaty to: JPG/JPEG, GIF, PNG<br>
  17. <a href="upload_zdjecia.php">zmien</a>');
  18. }
  19. $image_x = imagesx($img_src);
  20. $image_y = imagesy($img_src);
  21. if($image_x > $image_y){ //landscape
  22. $ratio = ($image_x > $max_x) ? $max_x/$image_x : 1;
  23. }else{ //portrait
  24. $ratio = ($image_y > $max_y) ? $max_y/$image_y : 1;
  25. }
  26. $new_x = $image_x*$ratio;
  27. $new_y = $image_y*$ratio;
  28. $new_img = imagecreatetruecolor($new_x, $new_y);
  29. imagecopyresampled($new_img, $img_src, 0, 0, 0, 0, $new_x, $new_y, $image_x, $image_y);
  30. if(exif_imagetype($source) == IMAGETYPE_JPEG){
  31. imagejpeg($new_img, $folder.'t_'.$plik,$kompresja);
  32. }elseif(exif_imagetype($source) == IMAGETYPE_GIF){
  33. imagegif($new_img, $folder.'t_'.$plik,$kompresja);
  34. }elseif(exif_imagetype($source) == IMAGETYPE_PNG){
  35. imagepng($new_img, $folder.'t_'.$plik,$kompresja);
  36. }
  37. ImageDestroy($img_src);
  38. ImageDestroy($new_img);
  39. }
thek
KOMPRESJA! Zobacz jakie parametry mają imagegif i imagepng. Pierwsza nie ma tego parametru wcale, a dla png ma być ona w przedziale 0-9... Nie wymyślaj funkcji jakich nie ma w GD2 winksmiley.jpg
Agape
No tak, nie zwróciłem uwagi na parametry. To była gotowa funkcja i ufałem, że ktoś dobrze napisał. Dzięki za pomoc.

Pomóżcie mi jeszcze rozszyfrować linijkę:
  1. $ratio = ($image_x > $max_x) ? $max_x/$image_x : 1;

Nie mam pojęcia co oznacza ?.
Potrzebuję obliczyć ratio w innym równaniu, gdzie wychodzi liczba niecałkowita i potrzebuje ten ułamek zaokrąglić w górę. ceil działa nie tak jak bym chciał, zaokrągla do liczby całkowitej a round nie zawszę zaokrągla w górę, np przy 1.2 da 1 a ja potrzebuje żeby dało 2. Da się jakoś połączyć te funkcje ?
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.