我有下面的代码可以从数据库中提取十六进制值并创建该颜色的图像。有超过一千个值,因此循环为它们创建一个图像。它似乎工作正常,除了它只是不断覆盖第一张图片 (0.jpg) 而不是创建新图片 0.jpg、1.jpg 2.jpg 等。知道我哪里出错了吗?
哦,是的,我也在其中将十六进制转换为 rgb,效果很好。
<?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++;
}
?>
最佳答案
$x = 0;
在 while 循环的每次迭代中执行。您需要将初始化移到循环前面。
关于从数据库中的十六进制值创建 PHP 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1838794/