Witam,

od kilku dni męczę się aby zrobić znak wodny na zdjeciach ale w żadnen sposób nie mogę tego zrobić dobrze. Przeczytałem już co sie dało w googlu i tutaj na forum i wciąż nie mogę tego poprawnie zrobić.

Chodzi o to że wprawdzie skrypt wstawia mi znak wodny ale po zapisaniu zdjęcia w kompresji 80% znak ten tak znacząco traci jakość że jest nie do zaakceptowania. Znak wodny mam w formie przeźroczystego png lub gifa. Jest to jeden zwykły wyraz i znak copyright (literka C w kółeczku). Znak ten nakładam skryptem na zdjecie jpg. Jeśli następnie zapiszę to jako jpg w jakości 100% to znak wodny wychodzi ładny jednak gdy zapisuję w jakości 80% to wychodzi w fatalnej jakości mimo że samo zdjęcie wciąć jest bardzo dobrej jakości. Próbowałem używać zarówno biblioteki GD jak i ImageMagick i w obu przypadkach dzieje się to samo.

Co więcej, nie mogę zrobić tego znaku nawet ręcznie w photoshopie. By zdjęcie uzyskało przyzwoitą wielkość czyli około 150 KB (oryginały mają około 320 KB) muszę go zapisać w photoshopie z jakością 5/12 ale wtedy znak wodny jest już w nieakceptowalnej jakości. Istna paranoja, tysiące serwisów www wstawia znaki wodne i dobrze one wyglądają a ja w żaden sposób nie mogę. Ma ktoś pomysł jak to rozwiązać? Poniżej wstawiam skrypt jaki używam do biblioteki imagemagick:

  1. $thumb = new Imagick();
  2. $thumb->readImage('zdjecie_80.jpg');
  3. $thumb->resizeImage(940,705,Imagick::FILTER_LANCZOS,1);
  4.  
  5. $thumb->setCompressionQuality(80);
  6.  
  7. $znakwodny = new Imagick('znakwodny.png');
  8. $thumb->compositeImage($znakwodny, $znakwodny->getImageCompose(), 5, 5);
  9.  
  10.  
  11. $thumb->writeImage('gotowy.jpg');
  12. $thumb->clear();
  13. $thumb->destroy();