Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 创建整个光谱的样例_Php_Loops_Colors_Rgb - Fatal编程技术网

Php 创建整个光谱的样例

Php 创建整个光谱的样例,php,loops,colors,rgb,Php,Loops,Colors,Rgb,我正在尝试为每种颜色创建一个样例,稍后我必须将其与图像的像素相匹配以创建马赛克 到目前为止,它没有显示任何内容。我不确定我是否正确运行了循环。它将每个数字取为$r$g$b,然后递增,并将其更改为十六进制格式,以便读取和显示 代码如下: $r = 000; $g = 000; $b = 000; for($r = 000; $r <= 155; $r++) { for($r = 000; $r <= 155; $r++) { for($r = 000; $r

我正在尝试为每种颜色创建一个样例,稍后我必须将其与图像的像素相匹配以创建马赛克

到目前为止,它没有显示任何内容。我不确定我是否正确运行了循环。它将每个数字取为$r$g$b,然后递增,并将其更改为十六进制格式,以便读取和显示

代码如下:

$r = 000;
$g = 000;
$b = 000;

for($r = 000; $r <= 155; $r++) {
    for($r = 000; $r <= 155; $r++) {
        for($r = 000; $r <= 155; $r++) {

        echo '<span style="width: 5px; height: 5px; background-color-color:#'.dechex($r).dechex($g).dechex($b).'">.</span>';


        }

    }

}
$r=000;
$g=000;
$b=000;

对于($r=000;$r
for($r=0;$rSo),由于所有的循环(创建1600万个跨度),这将是非常低效的,但是您的逻辑是正确的(ish),所以我将回答这个问题

for($r = 000; $r <= 155; $r++) {
    for($r = 000; $r <= 155; $r++) {
        for($r = 000; $r <= 155; $r++) {
关于($r=000;$r这里有几个问题:

  • 我看到三个循环都在设置
    $r
    ,它们可能应该是
    $r
    $g
    ,和
    $b
  • 您可能希望在每一步都将每个变量增加1个以上。正如所写的(一旦r/g/b修复完成),您得到的脚本将生成大约273MB的HTML输出,这将生成一个大约100英尺高的页面(在屏幕上,假设72 dpi)
  • 颜色的最大值是255,而不是155(除非您不喜欢明亮的颜色)
  • 您要查找的CSS选择器只是
    背景色
    ,而不是
    背景色
  • 当十六进制颜色低于16(
    10
    hex)时,需要用零填充十六进制颜色。最简单的方法是:

    $color = sprintf("#%02x%02x%02x", $r, $g, $b);
    echo "... background-color:$color ...";
    

您的脚本中有多个错误,尤其是在格式化颜色值时。我在这里选择了
sprintf
,因为它可以完成这项工作,并且在其他地方也很有用。然后CSS规则是错误的(
-color
)。此外,我已将一些样式移到head部分,以减少编写的HTML输出。此外,我还引入了一个steps变量,以避免浏览器崩溃():

div{width:5px;height:5px;float:left;}

你在三个循环中使用$r,每个变量应该是一个。它们应该运行到255而不是155。这与你的问题没有关系,但是如果你声明一个前导为0的数字,八进制中需要注意的是dechex没有包含值0到F的前导0,因此你的css将是错误的。使用背景色:rgb($r,$g,$b)而不是转换成hex@Einacio:真的,真的,真的!
echo '<span style="width: 5px; height: 5px; background-color-color:#'.dechex($r).dechex($g).dechex($b).'">.</span>';
$color = sprintf("#%02x%02x%02x", $r, $g, $b);
echo "... background-color:$color ...";
<head><style>div {width:5px; height:5px; float:left;}</style></head>
<?php

$min = 0;
$max = 256;
$step = 15;

for ($r = $min; $r < $max; $r+=$step)
{
    for ($g = $min; $g < $max; $g+=$step)
    {
        for ($b = $min; $b < $max; $b+=$step)
        {
            echo '<div style="background-color:', sprintf('#%02x%02x%02x', $r, $g, $b), '"></div>';
        }
    }
}