Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] W którym momencie nakładać znak wodny, żeby ponownie nie kompresować obrazka?
Forum PHP.pl > Forum > Przedszkole
kukix
Witam.

Mam dwie funkcje.. jedna tworzy miniaturkę zdjęcia, druga nakłada znak wodny..



Czy jeżeli najpierw stworzę miniaturkę a później drugą osobną funkcją nałoże na niego znak wodnym, to czy nie jest tak, że dwukrotnie kompresuje obrazek jpg?


Funkcja, kórą tworzę znak wodny na obrazek:

  1. switch($znaczek_format) {// importujemy plik ze znakiem
  2. case 'gif':
  3. $image1 = imageCreateFromGif($znaczek);
  4. break;
  5.  
  6. case 'png':
  7. $image1 = imageCreateFromPng($znaczek);
  8. break;
  9. }
  10.  
  11. switch($zdjecie_format) {// otwieramy plik jpg, na którym ma być naklejony znaczek
  12. case 'jpg':
  13. $image2 = ImageCreateFromJpeg($zdjecie);
  14. break;
  15.  
  16. case 'gif':
  17. $image2 = ImageCreateFromGif($zdjecie);
  18. break;
  19.  
  20. case 'png':
  21. $image2 = ImageCreateFromPng($zdjecie);
  22. break;
  23. }
  24.  
  25. $zdjecie_w = imagesx( $image2 ); // szerokość pliku
  26. $zdjecie_h = imagesy( $image2 ); // wysokość pliku
  27. $znaczek_w = imagesx( $image1 ); // szerokość znaczka
  28. $znaczek_h = imagesy( $image1 ); // wysokość znaczka
  29.  
  30.  
  31.  
  32. switch($pozycja) {
  33. okreslam pozycje znaku wodnego
  34. }
  35.  
  36.  
  37. imagecopymerge( $image2, $image1, $od_x, $od_y, 0, 0, $znaczek_w, $znaczek_h, $transparent );


Czy w ten sposób nie psuje jakości zdjęcia? Czy znak wodny lepiej nałożyć w trakcie tworzenia miniaturki, kiedy mam do niego uchwyt jeszcze przed kompresją..?
rzymek01
W przypadku gif i png nie tracisz na jakości, bo stosują kompresję bezstratną, lecz przy obróbce jpg jest możliwość utraty jakości, i imo w Twoim wypadku to występuję, bo dwa razy zapisujesz na dysk, a więc dwa razy kompresujesz (kompresja stratna).

Ponadto sam fakt dwukrotnego wczytywania obrazka jest wystarczający, żeby to zoptymalizować.
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.