За последние 24 часа нас посетили 20420 программистов и 1644 робота. Сейчас ищут 1302 программиста ...

imagefilter IMG_FILTER_GAUSSIAN_BLUR черный цвет

Тема в разделе "Обработка изображений средствами PHP", создана пользователем chupacabramiamor, 25 июн 2010.

  1. chupacabramiamor

    chupacabramiamor Активный пользователь

    С нами с:
    25 июн 2010
    Сообщения:
    4
    Симпатии:
    0
    Здравствуйте.
    Имеется картинка с альфа-каналом, то есть с некоторыми участками прозрачности. При наложении на эту картинку эффекта IMG_FILTER_GAUSSIAN_BLUR пропадает альфа канал. Вместо него черный цвет.
    Может кто-либо сталкивался с подобным косяком, а то в голову уже ничего не лезет?
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Скорее всего не используется imagesavealpha.
    Я угадал?
     
  3. chupacabramiamor

    chupacabramiamor Активный пользователь

    С нами с:
    25 июн 2010
    Сообщения:
    4
    Симпатии:
    0
    PHP:
    1. <?php
    2. $im = imagecreatefrompng("./source/clock.png");
    3. imagesavealpha($im, true);
    4. imagefilter($im, IMG_FILTER_GAUSSIAN_BLUR);
    5. imagepng($im, "42525.png");
    6. ?>
    При наложении другого фильтра, к примеру IMG_FILTER_GRAYSCALE альфа-канал остается неизменным...[/img]
     
  4. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Мне щас лень разбираться, могу посоветовать использовать матрицу скручивания для размытия по Гауссу.
    В мануале есть пример.
     
  5. chupacabramiamor

    chupacabramiamor Активный пользователь

    С нами с:
    25 июн 2010
    Сообщения:
    4
    Симпатии:
    0
    Разобрался сам. Перед тем как налаживать фильтр необходимо выставить какой-то особенный флаг:
    PHP:
    1. imagelayereffect($im, IMG_EFFECT_OVERLAY);
     
  6. chupacabramiamor

    chupacabramiamor Активный пользователь

    С нами с:
    25 июн 2010
    Сообщения:
    4
    Симпатии:
    0
    Я поспешил...
    Этот флаг действительно делает фон прозрачным, но и в тот же момент делает изображение контрастнее. Вобщем не то!