fedukonelove
В общем ситуация такая, что я накладываю на изображение Watermark’и, по всему изображению. Это получается штук 20 водяных знаков на изображении. Но проблема в том, что с каждым наложеным водяным знаком размер увеличивается чуть ли ни на его размер в кб. Получается моё изображение становится в более чем в 2 раза, чем было бы в стоке. Не помогло даже сжатие самого водяного знака — сначало оно весило 140кб, потом я средствами фотошопа сжал Width/Height картинки и качество не самое высокое — стало весить 40кб. Затем еще с помощью онлайн сжатия сжал до 8кб. Но проблема осталась ровно такая же.. Размер картинки с водяным знаком не уменьшился. (ps — изображения ватермарка заменял)…. В чем может быть причина увеличения?
Изображение ватермарка в формате PNG и прозрачное
Код наложения:
Код (Text):
private function watermark($img) { $image = new Imagick(); $image->readImage($img); $watermark = new Imagick(); $watermark->readImage(«files/watermark-3.png»); $iWidth = $image->getImageWidth(); $iHeight = $image->getImageHeight(); $wWidth = $watermark->getImageWidth(); $wHeight = $watermark->getImageHeight(); $newwWidth = $iWidth/4; if ($newwWidth>$wWidth) { // новое изображение больше старого? $proc = (($newwWidth-$wWidth)/$newwWidth)*100; // вычисляем новый размер $widthProc = ($wWidth/100)*$proc+$wWidth; $heigtProc = ($wHeight/100)*$proc+$wHeight; } else { $proc = $newwWidth/($wWidth/100); // вычисляем новый размер $widthProc = $newwWidth; $heigtProc = $wHeight/100*$proc; } $watermark->scaleImage($widthProc, $heigtProc); // get new size for ($w = 0; $w < $image->getImageWidth(); $w += $widthProc) { for ($h = 0; $h < $image->getImageHeight(); $h += $heigtProc) { $image->compositeImage($watermark, imagick::COMPOSITE_OVER, $w, $h); } } $namefile=»files/watermark/image.png»; if (!$image->writeImage($namefile)) return false; return $namefile; // сохранённая ватермарка }
Drunkenmunky
Упростите налагаемое изображение — цветовое пространство, DPI и т.д.
— Добавлено —Заготовьте один слой для всех случаев, и вырезайте из него необходимый кусок.