1

我需要一个示例算法,该算法将在基于网格的(x,y)系统上一次绘制一个像素,并根据基于以某种形式提供的二进制数据的 rbg 值对它们进行着色。我正在寻找用 php 或类似 php 的语言(如 C)编写的任何东西,但它不使用任何类型的库或图形卡 api,因为我在 php 中编码。

这是我在 php 中编写的内容,它使用随机颜色值,但在 html 画布中呈现需要 15 秒:

<?php
$r_max = 240;
$c_max = 320;
$row = -1;//-1 to offset while
while ($row<$r_max){
    ++$row;
    for($column=0; $column<=$c_max; ++$column)
    {
    echo 'ctx.fillStyle = "rgb(', rand()%255, ',', rand()%255, ',', rand()%255, ')";';
    echo 'ctx.fillRect(', $column, ',', $row, ',1,1);';
    }
}
?>
4

4 回答 4

2

不太确定我是否完全理解您的问题,但是.. PHP 具有 GD 函数,包括图像分配和 setpixel 调用、线条绘制等 ..在这里查看

哦,是的, imagemagick也用于更多异国情调的用途

于 2009-02-06T06:20:35.347 回答
0

您似乎正在尝试输出用于在<canvas>标签上绘图的 JavaScript 命令。绘制像素的更快方法可能是使用moveTolineTo。顺便说一句,你为什么不外循环一个 for 循环呢?

for($row=0; $row<=$r_max; ++$row) {
    for($column=0; $column<=$c_max; ++$column) {
        # draw pixel
    }
}

看起来更自然?

于 2009-02-06T06:35:07.407 回答
0

问题是您正在为每个像素生成代码。相反,为什么不让代码将像素信息写入您喜欢的图像格式,然后在页面中显示呢?这是(对我而言)最合理的算法解决方案......我不确定它是否适合你想要做的事情。

于 2009-02-06T08:11:27.370 回答
0

我不能使用图像格式,因为它对我的使用效率不高。我正在寻找一些示例代码,其中可能会根据数据显示图像,这样我就可以了解如何以比每次渲染 15 秒更快的速度执行我正在执行的操作。我上面包含的嵌套循环很慢。

于 2009-02-06T16:21:42.950 回答