Veritabanında onaltılık değerler PHP görüntü oluşturma

2 Cevap php

Ben bir veritabanından onaltılık değerleri çekmek ve o rengin bir görüntü oluşturmak için aşağıdaki kodu var. Orada bin bir aşkın değerler, bu yüzden hepsini bir görüntü oluşturmak için döngü oluyor. Bu sadece yerine, 1.jpg 2.jpg vb Ben yanlış gidiyorum Herhangi bir fikrim yenileri 0.jpg yaratmanın ilk görüntü (0.jpg) yazılmadan tutar dışında iyi iş gibi görünüyor?

Oh evet, ben iyi çalıştığını, orada çok rgb hex dönüştürme değilim.

<?php

    require ('connect.php');

    $sql = mysql_query("SELECT * FROM hex")
    or die(mysql_error());

    while($colors = mysql_fetch_array( $sql ))
        {

        $x = 0;

        $imgname = $x.".jpg";

        $color = $colors['value'];

        	if (strlen($color) == 6)
        		list($r, $g, $b) = array($color[0].$color[1],
        								 $color[2].$color[3],
        								 $color[4].$color[5]);

        	$r = hexdec($r); $g = hexdec($g); $b = hexdec($b);

        header("Content-type: image/jpeg");
        $image = imagecreate( 720, 576 );
        imagecolorallocate($image,$r, $g, $b);
        imagejpeg($image, $imgname);
        imagedestroy($image);

        $x++;

        }
    ?>

2 Cevap

$x = 0; while döngüsünün her tekrarında yürütülür. Siz ön döngü başlatma taşımak gerekir.

Sadece döngü başlamadan önce $x = 0; taşımak gerekir.

Çok yanlış bir kaç başka şeyler var gibi görünüyor

$x = 0;

while($colors = mysql_fetch_array( $sql ))
{
    $imgname = $x.".jpg";

    $color = $colors['value'];

    // Skip the whole lot if the colour is invalid
    if (strlen($color) != 6)
    	continue;

    // No need to create an array just to call list()
    $r = hexdec($color[0].$color[1]);
    $g = hexdec($color[2].$color[3]);
    $b = hexdec($color[4].$color[5]);

    // There's no need to header() if you're writing to a file
    //header("Content-type: image/jpeg");
    $image = imagecreate( 720, 576 );
    $colour = imagecolorallocate($image, $r, $g, $b);

    // You don't actually fill the image with the colour
    imagefilledrectangle($image, 0, 0, 719, 575, $colour);

    imagejpeg($image, $imgname);
    imagedestroy($image);

    $x++;
}