Используйте PHP imagecreatefromgif (), чтобы изменить правильные 150 пикселей GIF-изображения 760x1 пикселей - PullRequest
0 голосов
/ 07 декабря 2009

У меня есть изображение высотой 1 пиксель и шириной 760 пикселей, которое я использую в качестве повторяющегося вертикального фонового изображения. Правая сторона этого изображения заполнена плашечным цветом (оставшаяся левая сторона изображения - белая).

Цель этого фонового изображения в моем макете на основе CSS состоит в том, что оно создает иллюзию того, что цвет фона боковой панели проходит по всей странице (это легко сделать с помощью таблиц, но не так уж с помощью CSS-позиционирования).

Что мне нужно сделать, так это выяснить способ подачи сценария php (background-image.php), который содержит функцию imagecreatefromgif, шестнадцатеричное число, и должен использовать его для перекрашивания плашечного цвета изображения в соответствии передайте плашечный цвет и сохраните полученное изображение на сервере, перезаписав его по умолчанию.

В идеале, я бы не хотел вызывать эту функцию каждый раз при загрузке шаблона, а делать это только тогда, когда пользователь выбирает изменение цвета шаблона. Поэтому, как только они это сделают, я просто хотел бы изменить существующий образ, который у меня есть на сервере, который всегда будет называться «sidebar_bg.gif»

Любые идеи о том, как это сделать, очень ценятся.

Ответы [ 2 ]

2 голосов
/ 07 декабря 2009

Что-то подобное может сделать это:

$token = md5(serialize(array($red, $green, $blue)));

if (!file_exists('cachedir/'.$token.'.gif')) 
{
    $img = imagecreatefromgif('origfilename.gif');

    $color = imagecolorallocate($img, $red, $green, $blue);

    for ($i = $startPixel-1; $i < $endPixel; $i++)
    {
        imagesetpixel($img, $i, 0, $color);
    }

    imagegif($img, 'cachedir/'.$token.'.gif');
}

serveFile($token);

РЕДАКТИРОВАТЬ : Добавлено кеширование в пример кода

1 голос
/ 07 декабря 2009

Просто дополнение к этой записи . Вы можете преобразовать HEX цвет в RGB-запись с помощью следующей функции:

function hexToRGB ($hexColor)
{
    $output = array();
    $output['red']   = hexdec($hexColor[0].$hexColor[1]);
    $output['green'] = hexdec($hexColor[2].$hexColor[3]);
    $output['blue']  = hexdec($hexColor[4].$hexColor[5]);

    return $output;
}

например. попробовать:

var_dump(hexToRGB("FFFFFF"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...