2009-02-06 60 views
1

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

这里的东西,我在PHP中写道,使用随机颜色值,但它需要15秒的HTML画布渲染:

<?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);'; 
    } 
} 
?> 
+1

一个额外的细节: 生成的代码,使像素是什么需要15秒的99.9%。 – 2009-02-06 06:42:40

+0

如果批量处理它会快很多。在while循环中执行该工作,但在循环的外部和下部移动回显。 – aleemb 2009-02-06 12:27:23

回答

0

这似乎您试图输出的JavaScript命令博士在<canvas>标签上出现问题。更快的绘制像素的方法可能是使用moveTolineTo。顺便说一句,为什么你不外环循环以及?

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

看起来更自然?

2

不是真的知道我很明白你的问题,但.. PHP有包括图像分配和setpixel电话,画线等功能GD ...查看here

哦,是的imagemagick也更奇特的用途

0

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

0

我不能使用图像格式,因为它对我的使用效率不高。我正在寻找一些示例代码,其中可能会根据数据显示图像,这样我就可以了解如何以更快的速度完成我正在做的事情,然后每个渲染速度为15秒。我上面包含的嵌套循环可以减慢速度。