1

グリッドベースの(x、y)システムで一度に1つずつピクセルを描画し、何らかの形式で提供されるバイナリデータに基づくrbg値に基づいてピクセルに色を付けるアルゴリズムの例が必要です。phpまたはCなどの言語のようなphpで書かれたものを探していますが、phpでコーディングしているため、ライブラリやグラフィックカードのAPIを使用していません。

これは私が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には、画像の割り当てやsetpixelの呼び出し、線画などを含むGD関数があります。ここをチェックしてください。

ああ、そうですimagemagickももっとエキゾチックな用途に

于 2009-02-06T06:20:35.347 に答える
0

<canvas>タグに描画するためのJavaScriptコマンドを出力しようとしているようです。moveToピクセルを描画するより速い方法は、とを使用することかもしれませんlineTo。ところで、なぜあなたはforループも外側のループにしないのですか?

しません

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

より自然に見えますか?

于 2009-02-06T06:35:07.407 に答える
0

私の使い方では効率的ではないため、画像形式を使用できません。データに基づいて画像を表示するサンプル コードを探しています。これは、レンダリングあたり 15 秒よりも速い速度で自分が行っていることを実行する方法を理解できるようにするためです。上記に含めた入れ子になったループは、処理が遅くなります。

于 2009-02-06T16:21:42.950 に答える
0

問題は、ピクセルごとにコードを生成していることです。代わりに、コードでピクセル情報をお気に入りの画像形式に書き込んでから、それをページに表示してみませんか? それが(私にとって)最も合理的なアルゴリズムの解決策です...それがあなたがやろうとしていることに適合するかどうかはわかりません。

于 2009-02-06T08:11:27.370 に答える