在php中将数组转换为png

我想知道如何将颜色数组转换为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);

希望这可以帮助.

>欧根

上一篇:java – 从rgb像素值创建缓冲图像


下一篇:Why convolutions always use odd-numbers as filter_size