1

色の配列を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;
}
}
4

1 に答える 1

0

できますが、配列の構造に関する多くの情報を提供していません。私が使用することをお勧めするのは次のとおりです。

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];
    }
}

これで、画像の最大の幅と高さが得られました。ここから、多次元配列 (基本的には一度に 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);

お役に立てれば。

  • エオガン
于 2012-06-26T02:00:01.650 に答える