0

新しいユーザーが最初にサインアップしたときにプロファイル画像を生成してから、自分のプロファイル画像をアップロードする次の PHP メソッドがあります。明るい色の正方形を作成するだけで、プロフィール写真のないユーザーのリストを表示するときに、インターフェイスがもう少し面白くなります。

ランダムな色のチェッカーボードを作成するように、この方法をどのように適応させることができますか? このようなもの: http://krazydad.com/bestiary/thumbs/random_pixels.jpg

public function generate_random_image($filename, $w = 200, $h = 200, $chosen_color = NULL) {

        if(!$chosen_color) {
            $color_options = Array("#6f0247", "#FF0569", "#FFF478", "#BAFFC0", "#27DB2D", "#380470", "#9D69D6");
            $random        = rand(0,sizeof($color_options));
            $chosen_color  = $color_options[$random];       
        }

        $rgb   = self::hex2rgb($chosen_color);              
        $image = imagecreatetruecolor($w, $h);

        for($row = 1; $row <= $h; $row++) {
            for($column = 1; $column <= $w; $column++) {    

               $color = imagecolorallocate ($image, $rgb[0] , $rgb[1], $rgb[2]);

               imagesetpixel($image,$column - 1 , $row - 1, $color);
            }

            $row_count++;
        }

        $filename = APP_PATH.$filename;

        imagepng($image, $filename);

        return $chosen_color;
    }
4

2 に答える 2

2

着替えてみたらどうですか

$color = imagecolorallocate ($image, $rgb[0] , $rgb[1], $rgb[2]);

$color = imagecolorallocate ($image, rand(0,255), rand(0,255), rand(0,255));

次に、各ピクセルには独自の色があります。小さな画像に描画してから、200% または 300% (またはその他の任意の数値) で拡大縮小すると、リンクした画像のような大きくて分厚いピクセルが得られます。

于 2012-09-12T08:32:53.317 に答える
0

$rows とs を繰り返しながら、 $columnstep を目的のピクセル サイズに増やし、各繰り返しで別の色を選択する必要があります。

ピクセル幅 = 20x20 の例:

    $pixel = 20;
    for($row = 0; $row <= $h / $pixel; $row++) {
        for($column = 0; $column <= $w/ $pixel; $column++) {    
           $rgb   = self::hex2rgb($color_options[rand(0,sizeof($color_options))]); 
           $color = imagecolorallocate ($image, $rgb[0] , $rgb[1], $rgb[2]);

           imagefilledrectangle(
               $image,
               $column*$pixel,
               $row*pixel,
               $column*$pixel+$pixel,
               $row*pixel+$pixel, 
               $color
           );
        }
    }
于 2012-09-12T08:39:17.873 に答える