Avatar billede mazey Praktikant
10. november 2005 - 12:51 Der er 2 kommentarer og
1 løsning

Lave gradient colors vha. ImageCreate

Hej Eksperter

Jeg 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
Avatar billede dmdisco Nybegynder
10. november 2005 - 14:34 #1
kør funktionen 2 gange hvor du starter som den er nu og derefter laver en gradient mere der starter med $endcol og slutter med din tredje farve, den for løkke der kører skal du jo faktisk bare kører igenne halvt og så ændre start og end farverne og så køre resten
Avatar billede mazey Praktikant
10. november 2005 - 16:34 #2
Ok... er det sådan at du kan vise mig hvad du mener? -Er som sagt ikke så skarp til det her ... :D
Avatar billede mazey Praktikant
11. januar 2006 - 15:11 #3
Da der ikke er kommet flere svar, vælger jeg at lukke spørgsmålet
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester