php中数组到png的转换

php中数组到png的转换,php,arrays,pixels,Php,Arrays,Pixels,我想知道如何将颜色数组转换为png图像文件。 该数组称为$pixels。 请帮帮我 $im = imagecreatefrompng('start.png'); $background = imagecreatefrompng('background.png'); imageconverttruecolor($background); imageconverttruecolor($im); define('x',imagesx($im)); define('y',imagesy($im)); $

我想知道如何将颜色数组转换为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绘制图像。 为了找到图片的正确高度和宽度,您需要定义一个函数来比较max x和y值,并根据数组中找到的最大x/y值进行更新。i、 e

$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];
    }
}
所以,现在您已经获得了图像的最大宽度和高度。从这里开始,我们可以通过运行多维数组来构建图像-基本上,一次一个像素

要实际绘制像素,我们将使用

现在,一旦我们完成了,剩下要做的就是在浏览器中显示图像

header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
希望这有帮助

伊奥甘
$pixels是一个颜色数组,还是每个像素都有一个颜色数组?@SeanJohnson我认为这是一个颜色数组如果你已经有了一个png文件,或者可以使用相应的gd函数,这有什么意义?关于PNG文件格式的指导以及如何从头开始创建一个文件太宽泛,因此,我找到了解决方案。JavaRiRor然后请分享它作为一个答案,以便它有利于未来的访问者,如果不考虑删除问题。
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);