Nikitian
1.10.2009 - 18:23
Делаю скрипт наложения ватермарка. Столкнулся со странной ситуаций: на некоторые изображения ватермарк накладывается нормально, а на некоторые он разваливается. Код и пример скажут лучше меня.
PHP |
<?php //$wm_image - файл ватермарка. Их 3 под разные размеры, чтобы не ресайзить ещё //$res_image - файл, на который накладывается ватермарк. // Cохраняется в сам себя через временный файл (почему-то иногда если сохранять в себя сразу, то апач падал) $wm = new Imagick($wm_image); $wm->thumbnailImage($wm->getImageWidth(), $wm->getImageHeight()); $wm->setImageOpacity(round(mt_rand(25,40)/100,2)); //собственно делаем $position=mt_rand(0,100); if($position>75) { $w=$width-$wm->getImageWidth()-10; $h=$height-$wm->getImageHeight()-10; } elseif($position>50) { $w=10; $h=10; } elseif($position>25) { $w=$width-$wm->getImageWidth()-10; $h=10; } else { $w=10; $h=$height-$wm->getImageHeight()-10; } $image->compositeImage($wm, imagick::COMPOSITE_DARKEN, $w, $h); $wm->clear(); $wm->destroy(); //сохраняем try{ @unlink('/_uploads/tmp/wt'); $r[$res[0]]=$image->writeImage('/_uploads/tmp/wt'); @unlink($res_image); @copy('/_uploads/tmp/wt',$res_image); } catch (Exception $e) { $r[$res[0]]=true;//Чтобы больше не трогать этот файл } //выводим $image->clear(); $image->destroy(); |
Пример того, как портит изображение тут:
http://nikitian.ru/ow3b7fd3733c587024bdd6967db059d50f.jpg (вертикальные полосы)
Может кто поможет и ткнёт носом где я косячу?
Сразу: исходный файл ватермарка не порченный: вот они:
1,
2,
3 Спустя 19 часов, 47 минут, 1 секунда (2.10.2009 - 13:10) Nikitian написал(а):
Спустя 14 минут, 13 секунд (2.10.2009 - 13:24) waldicom написал(а):
Указать на ошибку к сожалению не могу, но может попробовать совершенно другое изображение в качестве watermark'а?
Спустя 48 минут, 30 секунд (2.10.2009 - 14:13) Nikitian написал(а):
Какое именно другое? Сейчас посмотрел - проблема не в наложении, а в генерации полупрозрачности именно у этого изображения (самое маленькое из трёх). Видимо всё не так страшно и сейчас грешу на черезстрочность пнг.