Большой размер изображения при наложении Watermark — Imagick

fedukonelove

В общем ситуация такая, что я накладываю на изображение Watermark’и, по всему изображению. Это получается штук 20 водяных знаков на изображении. Но проблема в том, что с каждым наложеным водяным знаком размер увеличивается чуть ли ни на его размер в кб. Получается моё изображение становится в более чем в 2 раза, чем было бы в стоке. Не помогло даже сжатие самого водяного знака — сначало оно весило 140кб, потом я средствами фотошопа сжал Width/Height картинки и качество не самое высокое — стало весить 40кб. Затем еще с помощью онлайн сжатия сжал до 8кб. Но проблема осталась ровно такая же.. Размер картинки с водяным знаком не уменьшился. (ps — изображения ватермарка заменял)…. В чем может быть причина увеличения?

Изображение ватермарка в формате PNG и прозрачное

Код наложения:

Код (Text):
  1. private function watermark($img)
  2.     {
  3.  
  4.         $image = new Imagick();
  5.         $image->readImage($img);
  6.  
  7.         $watermark = new Imagick();
  8.         $watermark->readImage(«files/watermark-3.png»);
  9.  
  10.         $iWidth = $image->getImageWidth();
  11.         $iHeight = $image->getImageHeight();
  12.  
  13.         $wWidth = $watermark->getImageWidth();
  14.         $wHeight = $watermark->getImageHeight();
  15.  
  16.  
  17.         $newwWidth = $iWidth/4;
  18.  
  19.         if ($newwWidth>$wWidth) { // новое изображение больше старого?
  20.             $proc = (($newwWidth-$wWidth)/$newwWidth)*100;
  21.             // вычисляем новый размер
  22.             $widthProc = ($wWidth/100)*$proc+$wWidth;
  23.             $heigtProc = ($wHeight/100)*$proc+$wHeight;
  24.  
  25.         } else {
  26.  
  27.             $proc =  $newwWidth/($wWidth/100);
  28.             // вычисляем новый размер
  29.             $widthProc = $newwWidth;
  30.             $heigtProc = $wHeight/100*$proc;
  31.  
  32.         }
  33.  
  34.         $watermark->scaleImage($widthProc, $heigtProc); // get new size
  35.  
  36.  
  37.         for ($w = 0; $w < $image->getImageWidth(); $w += $widthProc) {
  38.             for ($h = 0; $h < $image->getImageHeight(); $h += $heigtProc) {
  39.                 $image->compositeImage($watermark, imagick::COMPOSITE_OVER, $w, $h);
  40.             }
  41.         }
  42.  
  43.  
  44.         $namefile=»files/watermark/image.png»;
  45.  
  46.  
  47.         if (!$image->writeImage($namefile)) return false;
  48.  
  49.  
  50.         return $namefile; // сохранённая ватермарка
  51.  
  52.     }
 

Drunkenmunky

Упростите налагаемое изображение — цветовое пространство, DPI и т.д.
— Добавлено —

Заготовьте один слой для всех случаев, и вырезайте из него необходимый кусок.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *