问题描述
我不知道我怎么会变换颜色数组为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格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!