我想知道如何将颜色数组转换为png图像文件.
该数组称为$pixels.
请帮我.
$im = imagecreatefrompng('start.png');
$background = imagecreatefrompng('background.png');
imageconverttruecolor($background);
imageconverttruecolor($im);
define('x',imagesx($im));
define('y',imagesy($im));
$pixels=array();
for ($x = 0; x>$x;++$x){
for ($y=0;y>$y;++$y){
$s=imagecolorat($background,$x,$y);
if ($s&&$s==imagecolorat($im,$x,$y))
$pixels[$x][$y]=0xFFFFFF;
else $pixels[$x][$y]=0x000000;
}
}
解决方法:
可以,但是您没有提供有关阵列结构的太多信息.我建议使用以下内容:
Array $arr = (Array($x, $y, $r, $g, $b), Array($x, $y, $r, $g, $b) ...);
因此,您正在看一个多维数组,每个嵌入式数组都存储在其中.
$x = x position of pixel
$y = y position of pixel
$r = red value (0 - 255)
$g = green value (0 - 255)
$b = blue value (0 - 255)
在这里,您可以使用GD绘制图像.
为了找到正确的图片高度和宽度,您需要定义一个函数以比较最大x和y值,并根据数组中找到的最大x / y值更新它们.即;
$max_height = (int) 0;
$max_width = (int) 0;
foreach ($arr as $a)
{
if ($a[0] > $max_width)
{
$max_width = $a[0];
}
if ($a[1] > $max_height)
{
$max_height = $a[1];
}
}
因此,现在您已经有了图像的最大宽度和高度.从这里开始,我们可以通过遍历多维数组来开始构建图像-基本上一次只能一个像素.
为了实际绘制像素,我们将使用imagesetpixel.
$im = imagecreatetruecolor($width, $height);
foreach ($arr as $b)
{
$col = imagecolorallocate($im, $a[2], $a[3], $a[4]);
imagesetpixel ($im , $a[0] , $a[1] , $col );
}
现在,一旦完成,剩下要做的就是在浏览器中显示图像.
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
希望这可以帮助.
>欧根