Lave gradient colors vha. ImageCreate
Hej EksperterJeg har fundet dette script på nettet:
<?php
/* Version 1.3 by Warlord */
/*
Appears to be a glitch in images greater than 250px high - never reaches final colour?
*/
class grad {
var $height = 100;
var $width = 100;
var $startcol = '000000';
var $endcol = 'ffffff';
function draw() {
$im = imagecreate ($this->width, $this->height);
$b = hexdec($this->startcol);
$c = hexdec($this->endcol);
$sr = ($b & 0xFF0000) >> 16;
$sg = ($b & 0xFF00) >> 8;
$sb = ($b & 0xFF);
$er = ($c & 0xFF0000) >> 16;
$eg = ($c & 0xFF00) >> 8;
$eb = ($c & 0xFF);
$r = $er - $sr;
$g = $eg - $sg;
$b = $eb - $sb;
for ($line = 0; $line < $this->height; $line++)
{
$cRed = (($sr += ($r / $this->height)) < 0) ? (int)0: (int)$sr;
$cGreen = (($sg += ($g / $this->height)) < 0) ? (int)0: (int)$sg;
$cBlue = (($sb += ($b / $this->height)) < 0) ? (int)0: (int)$sb;
$clr[$line] = imagecolorallocate($im, $cRed, $cGreen, $cBlue);
imageline($im, 0, $line, ($this->width - 1), $line, $clr[$line]);
}
imagejpeg($im);
}
}
Header("Content-type: image/jpg");
$img = new grad;
if (isset($height)) $img->height = $height;
if (isset($width)) $img->width = $width;
if (isset($startcol)) $img->startcol = $startcol;
if (isset($endcol)) $img->endcol = $endcol;
$img->draw();
?>
Det generer et kvadrat med en start farve og en slut farve og derefter gradierer den farven fra top til slut.
Jeg er (endnu) ikke så god til billeder med PHP, og derfor skriver jeg her.
Kan man udvide ovenstående script til at have 3 farver. en topfrave, en mellemfarve og en slutfarve, og så få topfarve til at gradiere med mellemfarven og mellemfarven med slutfarven.
f.eks. på www.macromedia.com er menuen først gråhvid, hvorefter den toner over i en mere grå og til sidst toner den ud i hvidgrå igen.
Burde man ikke kunne lave det vha ovenstående script?!
Takker på forhånd!
Mazey
