3
A
回答
6
好,
雖然顏色可能概率是在一個更好的順序,
這是我的工作。
<?php
function Gradient($HexFrom, $HexTo, $ColorSteps) {
$FromRGB['r'] = hexdec(substr($HexFrom, 0, 2));
$FromRGB['g'] = hexdec(substr($HexFrom, 2, 2));
$FromRGB['b'] = hexdec(substr($HexFrom, 4, 2));
$ToRGB['r'] = hexdec(substr($HexTo, 0, 2));
$ToRGB['g'] = hexdec(substr($HexTo, 2, 2));
$ToRGB['b'] = hexdec(substr($HexTo, 4, 2));
$StepRGB['r'] = ($FromRGB['r'] - $ToRGB['r'])/($ColorSteps - 1);
$StepRGB['g'] = ($FromRGB['g'] - $ToRGB['g'])/($ColorSteps - 1);
$StepRGB['b'] = ($FromRGB['b'] - $ToRGB['b'])/($ColorSteps - 1);
$GradientColors = array();
for($i = 0; $i <= $ColorSteps; $i++) {
$RGB['r'] = floor($FromRGB['r'] - ($StepRGB['r'] * $i));
$RGB['g'] = floor($FromRGB['g'] - ($StepRGB['g'] * $i));
$RGB['b'] = floor($FromRGB['b'] - ($StepRGB['b'] * $i));
$HexRGB['r'] = sprintf('%02x', ($RGB['r']));
$HexRGB['g'] = sprintf('%02x', ($RGB['g']));
$HexRGB['b'] = sprintf('%02x', ($RGB['b']));
$GradientColors[] = implode(NULL, $HexRGB);
}
$GradientColors = array_filter($GradientColors, "len");
return $GradientColors;
}
function len($val){
return (strlen($val) == 6 ? true : false);
}
$count = 0;
$steps = 9;
$Gradients = Gradient("FFFFFF", "FF0000", $steps);
foreach($Gradients as $Gradient)
echo '<div style="background-color: #' . strtoupper($Gradient) . '">' . htmlentities('<option value="' . strtoupper($Gradient) . '">' . strtoupper($Gradient) . '</option>') . '</div>';
$count += count($Gradients);
$Gradients = Gradient("df1f00", "00FF00", $steps);
foreach($Gradients as $Gradient)
echo '<div style="background-color: #' . strtoupper($Gradient) . '">' . htmlentities('<option value="' . strtoupper($Gradient) . '">' . strtoupper($Gradient) . '</option>') . '</div>';
$count += count($Gradients);
$Gradients = Gradient("00df1f", "0000FF", $steps);
foreach($Gradients as $Gradient)
echo '<div style="background-color: #' . strtoupper($Gradient) . '">' . htmlentities('<option value="' . strtoupper($Gradient) . '">' . strtoupper($Gradient) . '</option>') . '</div>';
$count += count($Gradients);
$Gradients = Gradient("0000df", "000000", $steps);
foreach($Gradients as $Gradient)
echo '<div style="background-color: #' . $Gradient . '">' . htmlentities('<option value="' . $Gradient . '">' . $Gradient . '</option>') . '</div>';
$count += count($Gradients);
echo 'count: ' . $count;
2
與
之間
你可以找到從白到黑的路徑,但你將有困難的時候,包括所有的顏色所有的顏色 - 色彩空間是3維的,不是線性的。
你可以看看本作的一些想法: http://www.exorithm.com/algorithm/view/create_gradient
0
下面是函數的一些定製,它也處理情況下,只有1或2需要畢業,並且還取消對六#微性之前和發送回色的陣列開始#。這樣可以直接應用於內容。
public function gradient($from_color, $to_color, $graduations = 10) {
$graduations--;
$startcol = str_replace("#", "", $from_color);
$endcol = str_replace("#", "", $to_color);
$RedOrigin = hexdec(substr($startcol, 0, 2));
$GrnOrigin = hexdec(substr($startcol, 2, 2));
$BluOrigin = hexdec(substr($startcol, 4, 2));
if ($graduations >= 2) { // for at least 3 colors
$GradientSizeRed = (hexdec(substr($endcol, 0, 2)) - $RedOrigin)/$graduations; //Graduation Size Red
$GradientSizeGrn = (hexdec(substr($endcol, 2, 2)) - $GrnOrigin)/$graduations;
$GradientSizeBlu = (hexdec(substr($endcol, 4, 2)) - $BluOrigin)/$graduations;
for ($i = 0; $i <= $graduations; $i++) {
$RetVal[$i] = strtoupper("#" . str_pad(dechex($RedOrigin + ($GradientSizeRed * $i)), 2, '0', STR_PAD_LEFT) .
str_pad(dechex($GrnOrigin + ($GradientSizeGrn * $i)), 2, '0', STR_PAD_LEFT) .
str_pad(dechex($BluOrigin + ($GradientSizeBlu * $i)), 2, '0', STR_PAD_LEFT));
}
} elseif ($graduations == 1) { // exactlly 2 colors
$RetVal[] = $from_color;
$RetVal[] = $to_color;
} else { // one color
$RetVal[] = $from_color;
}
return $RetVal;
}
相關問題
- 1. 生成128位十六進制數
- 2. 十六進制串&十六進制
- 3. 在JS中生成隨機生成的十六進制顏色的免費十六進制顏色?
- 4. 十六進制表示爲char十六進制的文本
- 5. 將十進制轉換爲十六進制和十六進制
- 6. Android平滑漸變
- 7. 十六進制
- 8. 十六進制
- 9. 十六進制
- 10. 十六進制表示
- 11. 十六進制表示法
- 12. Dec十六進制表C++?
- 13. 在Python中生成一個十六進制字節列表
- 14. Powershell生成一個十六進制列表
- 15. 水平排列十六進制
- 16. 將十六進制轉換爲二進制到十六進制?
- 17. as3 ByteArray轉爲十六進制(二進制十六進制表示)
- 18. 隨機十六進制顏色發生器+ RGB滑塊jquery
- 19. 十六進制和十六進制十進制之間的區別
- 20. 平滑的CSS漸變
- 21. 十六進制爲十進制
- 22. 十六進制和十進制轉換
- 23. 使用十進制或十六進制
- 24. Javascript十進制到十六進制
- 25. 轉換十六進制到十進制
- 26. 選擇一個十六進制附近的十六進制數
- 27. JSON數轉換成十進制十六進制值
- 28. 十六進制數轉換成十進制公式
- 29. 在jQuery中使用十六進制值和變量改變.css漸變
- 30. Python十六進制
**從黑色到白色的線性**漸變只能包含灰度色。 – zerkms 2010-12-03 04:47:47