Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Графика > Наложение картинок


Автор: нуп 24.8.2012, 17:43
Не могу разобраться как наложить картинку одну на другую, с сохранением прозрачности. Сначала отрисовываю картинку, и потом накладываю на неё прозрачный top.png. Хочется что-бы верхний слой перебивал нижний, и получались заполенные кружочки(а не как сейчас белые).  Желаймые результат в архиве с кодом
Код

  $topimg = imagecreatefrompng('top.png');
    $img = imagecreatefromjpeg('background.jpg');
    $dest = imagecreatetruecolor(320, 560);
    $black = imagecolorallocate($dest, 0, 0, 0);
    imagecolortransparent($dest, $black);

    $png = imagecreatetruecolor(800, 600);
    imagesavealpha($png, true);

    $trans_colour = imagecolorallocatealpha($png, 255, 255, 255, 127);
    imagefill($png, 0, 0, $trans_colour);


    imagefill($topimg, 0, 0, $trans_colour);

    imagecopymerge($png, $img, 30, 30, 0, 0, 130, 130, 100);
    imagecopymerge($png, $topimg, 0, 0, 0, 0, 320, 560, 100);


    header("Content-type: image/png");
    imagepng($png);
 
Подскажите что делаю не так? Куда копать?

Автор: ksnk 24.8.2012, 18:00
Копать в сторону логики.
-- создал пустую поверхность, 
-- сделал ее полупрозрачной
-- поместил на нее неполупрозрачную картинку, 
-- потом еще одну
Где логика?

Логика в GD отсутсвует.  smile 

Вот http://php.net/manual/en/image.examples.merged-watermark.php. Правильнаяя ссылка ниже.

Автор: ksnk 24.8.2012, 18:31
А, это про наложении виньетки! не понял с первого раза , sorry.
Вот http://www.php.net/manual/en/function.imagesavealpha.php#102597

Автор: нуп 24.8.2012, 18:58
Спасибо, то что нужно.  smile Логика отсутствует, так как не знаю с чего браться 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)