颜色渐变的算法

作者: 我不是鱼 (2008-12-23 15:33)分类: PHP   标签: GD 颜色渐变

想用一些渐变颜色的图片做背景,但无奈美工是一点都不会。所以只好用php来完成这个工作。
下面的例子是从蓝色渐变成红色。效果还算平滑。



PHP代码
  1. <?php    
  2. $width = 500;   
  3. $height = 20;   
  4. $color1 = "0000FF";//blue   
  5. $color2 = "FF0000";//red   
  6.   
  7. $im = imagecreatetruecolor($width$height);   
  8. list($R1$G1$B1) = RGBtodec($color1);   
  9. list($R2$G2$B2) = RGBtodec($color2);   
  10. for ($i=1; $i<=$width$i++){   
  11.     $R = ($R2*$i+($width-$i)*$R1)/$width;   
  12.     $G = ($G2*$i+($width-$i)*$G1)/$width;   
  13.     $B = ($B2*$i+($width-$i)*$B1)/$width;   
  14.        
  15.     $x1 = $i-1;   
  16.     $y1 = 0;   
  17.     $x2 = $i;   
  18.     $y2 = $height;   
  19.   
  20.     $color = imagecolorallocatealpha($im$R$G$B, 0);   
  21.     imagefilledrectangle ($im$x1$y1$x2$y2$color);   
  22. }   
  23. imagepng($im);   
  24. imagedestroy($im);   
  25.   
  26. function RGBtodec($rgb){   
  27.     $arr = array(0, 0, 0);   
  28.     if(strlen($rgb) == 6){   
  29.         $arr = array(   
  30.             substr($rgb, 0, 2), substr($rgb, 2, 2), substr($rgb, 4, 2)   
  31.         );   
  32.     }   
  33.     elseif (strlen($rgb) == 3){   
  34.         $arr = array(   
  35.             str_repeat(substr($rgb, 0, 1), 2),    
  36.             str_repeat(substr($rgb, 1, 1), 2),    
  37.             str_repeat(substr($rgb, 2, 1), 2)   
  38.         );   
  39.     }   
  40.        
  41.     foreach ($arr as $k => $vl){   
  42.         $arr[$k] = hexdec($vl);   
  43.     }   
  44.        
  45.     return $arr;   
  46. }   
  47. ?>  

评论 (0) | 浏览 (5099)

前一篇: Apache 目录列表
后一篇: 将 tr appendChild 到 table 中的问题


添加评论

昵称:


博主


« 2020年-12月 »
29 30 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2

分类


热门标签


最近留言


概要

  • 文章数量: 41
  • 分类数量: 9
  • 标签数量: 73
  • 评论数量: 159
  • 浏览次数: 3236512

友情链接