Осторожно, скользко! Играемся с изображением в ПХП. Эффект мокрого пола.

    Как реализовать эффект мокрого пола?

    А все очень просто!

    Надо всего лишь зайти под “cut” и посмотреть… =)

    Задача: реализовать эффект мокрого пола

    Решение: PHP + GD
    А все просто… =)

    Код без пояснений…
    Думаю, кому это надо, те и так поймут.

    function reflection(&$img,$perc=50,$maxAlpha=127)
    {
    $src_height = imagesy($img);
    $src_width = imagesx($img);
    $dest_height = $src_height + ($src_height / (100/$perc));
    $dest_width = $src_width;

    $reflected = imagecreatetruecolor($dest_width, $dest_height);
    imagealphablending($reflected, false);
    imagesavealpha($reflected, true);

    imagecopy($reflected, $this->img, 0, 0, 0, 0, $src_width, $src_height);
    $reflection_height = $src_height / 2;
    for($y=$src_height;$y<$dest_height;$y++)
    {
    $alpha = (($y-$src_height)/($dest_height-$src_height))*$maxAlpha;
    for($x=0;$x<$src_width;$x++)
    {
    $rgba = imagecolorat($img, $x, $src_height - ($y-$src_height+1));
    $rgba = imagecolorsforindex($img, $rgba);
    $rgba = imagecolorallocatealpha($reflected, $rgba['red'], $rgba['green'], $rgba['blue'], $alpha);
    imagesetpixel($reflected, $x, $y, $rgba);
    }
    }
    $img = $reflected;
    }


    UPD По просьбе трудящихся
    Пример:
    image

    Тест и код с подсветкой можно найти в моем блоге.
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 27

      +2
      прикольно
      еще можно было бы к посту пару-тройку примеров приложить
        +1
        Будет сделано!
        +1
        эффект мокрого пола
          +2
          А что Вы этим хотели сказать?
          • НЛО прилетело и опубликовало эту надпись здесь
              0
              Спасибо, исправил.
            +3
            линии раздела не хватает, сливаются изображения. или просто пример неудачный выбран.
              0
              Что Вы имеете в виду?? Разделить изображения однопиксельной линией? Или как? Я просто понять не могу… =(
                0
                не надо начинать отражение с нулевой прозрачности.
                (и поменяйте картинку, эта очень неудачна)
                  +2
                  Я придумал как это сделать… А корректировать — дело каждого =)
                  0
                  Разделить изображения однопиксельной линией? — да.
                    0
                    «Линия раздела» в данном случае — образм. она не обязательно должна быть линией =) просто нужно какое-то отделение оригинала от рефлекшна. Например, можно попробовать сделать рябь (не сильную) рефлекшна или еще какое-нибудь искажение.
                      0
                      Вы меня уж извините… Я не дизайнер… Поэтому если покажите как надо… Я поправлю… И будет так, как надо…
                        0
                        Я тоже не дизайнер 8) Как придумаю как показать как надо — сделаю и покажу. :)

                        p.s. я не критикую, я описываю субъективное осчусчение.
                  –1
                  Это круто. Понравилось.

                  Если бы вы еще написали как нормальные тени и закругленные края делать, было бы вообще мега-круто. :-) Серьезно.
                    0
                    Заходите в мой блог… И подписывайтесь на RSS. Реализую — выложу. Возможно, завтра.
                  • НЛО прилетело и опубликовало эту надпись здесь
                      0
                      Он не на всех хостингах стоит и не везде его хотят ставить. Хотя если сервак свой или виртуальный — то почему бы и нет.
                        0
                        Imagick:

                        клубника
                        0
                        Тут не только эффект мокрого пола, а и куча дополнительных приколов
                          +1
                          После перехода на imagemagic стал замечать насколько компактен и понятен стал код в области работы с графикой. а уж про качество выходящего материала и говорить не стоит — GD страшно уродует фотки.
                            0
                            Полностью согласен! Просто большинство хостингов ImageMagic не предоставляют.
                            Если хотите, сделаю еще и на IMagik.
                          • НЛО прилетело и опубликовало эту надпись здесь
                              0
                              Хоть бы построчно копировали, а то попиксельная обработка вгоняет в ностальгию по egavga.bgi
                                0
                                А по какой причине может не работать alpha? Отражение картинки работает, а прозрачность нет
                                  0
                                  Вплане Вы код используете? Или у Вас в браузере не отображается прозрачность?
                                    0
                                    код использую

                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                Самое читаемое