md5hash
Новичок
watermark темнеет при вставке в jpeg
Всем добрый день. Встал тут перед одной проблемой с imagemagick. К сожалению GD использовать лучше не. Постараюсь объяснить суть проблемы.
Клиент дал watermark, и хочет воткнуть его в свои рисунки, рисунков до кучи и больше (около 5000) причем разных форматов. Я сделал скрипт для конверта и вставки вотермарка, в отдельный условие загнал гифы (они ведь анимированные). Запустил скрипт, и все ок, никаких предреканий нет, но вот с jpeg прямо таки засада. Текст на ватермарке становится темнее. В чем подвох я так понять не могу. Качество ставил 100, без разницы, пытался ватермарк переделать в jpg, png бес толку ...
Может кто нить тут подскажет? Скрипт собсно вотъ.
-~{}~ 07.05.07 21:10:
порылся в документашке, посравнивал с конвертацией в кореле в итоге проблему решил, заменив на вот это
system(IMPATH . "/composite -gravity southwest temp.gif {$file} -sampling-factor 4:4:4 -quality 100 -compress Lossless {$file}");
Может кому и пригодится чорт побери на форуме
Респект народ.
Всем добрый день. Встал тут перед одной проблемой с imagemagick. К сожалению GD использовать лучше не. Постараюсь объяснить суть проблемы.
Клиент дал watermark, и хочет воткнуть его в свои рисунки, рисунков до кучи и больше (около 5000) причем разных форматов. Я сделал скрипт для конверта и вставки вотермарка, в отдельный условие загнал гифы (они ведь анимированные). Запустил скрипт, и все ок, никаких предреканий нет, но вот с jpeg прямо таки засада. Текст на ватермарке становится темнее. В чем подвох я так понять не могу. Качество ставил 100, без разницы, пытался ватермарк переделать в jpg, png бес толку ...
Может кто нить тут подскажет? Скрипт собсно вотъ.
PHP:
function setWatermark($file)
{
// open watermark we want add
if (!@getimagesize($file)) return;
$waterinfo = image_info("watermark.gif");
$watermark = imagecreatefromgif("watermark.gif");
$originfo = image_info($file);
if (is_resource($watermark))
{
if ($originfo[IMAGE_WIDTH] < $waterinfo[IMAGE_WIDTH])
{
// we have to watermark be smallest than it is
}
else
{
$newimage = imagecreate($originfo[IMAGE_WIDTH], $waterinfo[IMAGE_HEIGHT]);
imagecolorallocate($newimage, 255, 255, 255);
imagecopy($newimage, $watermark, 0, 0, 0, 0, $waterinfo[IMAGE_WIDTH], $waterinfo[IMAGE_HEIGHT]);
imagegif($newimage, "temp.gif");
imagedestroy($newimage);
imagedestroy($watermark);
if ($originfo[IMAGE_TYPE] != "GIF")
{
system(IMPATH . "/convert {$file} -repage " . $originfo[IMAGE_WIDTH] . "x" . ($originfo[IMAGE_HEIGHT] + $waterinfo[IMAGE_HEIGHT]) . " {$file}");
system(IMPATH . "/composite -gravity southwest temp.gif {$file} {$file}");
}
else
{
system(IMPATH . "/convert {$file} -repage " . $originfo[IMAGE_WIDTH] . "x" . ($originfo[IMAGE_HEIGHT] + $waterinfo[IMAGE_HEIGHT]) . " {$file}");
system(IMPATH . "/convert {$file} -coalesce null: ( temp.gif -coalesce -repage +0+" . $originfo[IMAGE_HEIGHT] . " ) -layers Composite {$file}");
}
echo $file . "\n";
flush();
}
}
}
порылся в документашке, посравнивал с конвертацией в кореле в итоге проблему решил, заменив на вот это
system(IMPATH . "/composite -gravity southwest temp.gif {$file} -sampling-factor 4:4:4 -quality 100 -compress Lossless {$file}");
Может кому и пригодится чорт побери на форуме

Респект народ.