本文介绍了变换数组在PHP png格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不知道我怎么会变换颜色数组为PNG图像文件。
该数组被称为 $像素
请帮我。

  $ IM = imagecreatefrompng('start.png');
$背景= imagecreatefrompng('background.png');
imageconverttruecolor($背景);
imageconverttruecolor($ IM);
定义('X',imagesx($ IM));
定义('Y',imagesy($ IM));
$像素=阵列();
为($ x = 0; X> $ X ++ $ X){
为($ Y = 0; Y> $ Y ++ $ Y){
    $ S = imagecolorat($背景,$ X,$ Y);
    如果($ S&放大器;&安培; $ s的== imagecolorat($ IM,$ X,$ Y))
    $像素[$ X] [$ Y] = 0XFFFFFF;
    否则$像素[$ X] [$ Y] = 0x000000处;
}
}


解决方案

可以,但您没有提供对您的阵列结构的信息。我会建议使用如下;

 数组$ ARR =(阵列($ X,$ Y,$ R,$ G,$ B),阵列($ X,$ Y,$ R,$ G,$ b)...);

所以,你正在寻找一个多维数组,其中每个嵌入式阵列存储;

  $ X = X像素的位置
$ Y =像素的y位置
$ R =红色值(0 - 255)
$ G =绿色值(0 - 255)
$ B =蓝色值(0 - 255)

在这里,您可以用GD绘制图像。
为了找到图片的正确的高度和宽度,你要定义一个函数来比较最大x和y的值,并根据数组中发现的最大的X / Y值更新它们。即;

  $ MAX_HEIGHT =(INT)0;
$ MAX_WIDTH =(INT)0;的foreach($改编为$ a)
{
    如果($ A [0]> $ MAX_WIDTH)
    {
        $ MAX_WIDTH = $ a [0];
    }
    如果($一个[1]≥$ MAX_HEIGHT)
    {
        $ MAX_HEIGHT = $ A [1];
    }
}

所以,现在你已经得到了你的形象最大宽度和高度。从这里,我们可以开始通过多维数组运行构造的图像 - 在同一时间基本上,一个像素

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

  $ IM = imagecreatetruecolor($宽度,高度$);
的foreach($改编为$ B)
{
    $ COL = imagecolorallocate($ IM,美元[2],美元[3],$ A [4]);
    imagesetpixel($ IM,$ A [0],$ A [1],$ COL);
}

现在,一旦我们完成后,所有剩下要做的就是实际显示在浏览器中的图像。

 标题(内容类型:image / PNG');
imagepng($ IM);
imagedestroy($ IM);

希望这有助于。


  • 锐衡

I was wondering how i could transform an array of colors to a png image file.the array is called $pixels.Please help me.

$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;
}
}
解决方案

You can, but you haven't provided much information on the structure of your array. What I'd recommend using is the following;

Array $arr = (Array($x, $y, $r, $g, $b), Array($x, $y, $r, $g, $b) ...);

So you're looking at a multidimensional array, of which each embedded array is storing;

$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)

From here, you can use GD to draw the image.In order to find the correct height and width of the picture, you'll want to define a function to compare the max x and y values, and update them based on the largest x/y values found in the array. 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];
    }
}

So, now you've got the max width and height for your image. From here, we can start constructing the image by running through the multidimensional array - basically, one pixel at a time.

To actually draw the pixel, we're going to use 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 );
}

Now, once we've finished, all that's left to do is actually display the image in the browser.

header('Content-type: image/png');
imagepng($im);
imagedestroy($im);

Hope this helps.

  • Eoghan

这篇关于变换数组在PHP png格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-31 05:38