Сохранение значений пикселей изображения в двумерном массиве с использованием PHP, а затем доступ к ним с помощью цикла - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть этот код, который я пытался сохранить значения пикселей изображения в 2D-массиве, а затем попытаться получить к ним доступ, чтобы я мог воссоздать то же изображение из пикселей, хранящихся в массиве, я пытался сделать следующее, но доступ только к массиву в 1 измерении, любой, кто может помочь, оценит его по достоинству

$resource = imagecreatefromjpeg("Broadway_tower_edit.jpg");
$width = 3;
$height = 3;

$arrayPixels = array();

//put pixels values in an array

for($x = 0; $x < $width; $x++) {

    for($y = 0; $y < $height; $y++) {
        // pixel color at (x, y)
        $color = imagecolorat($resource, $x, $y);



        $arrayPixels1 = array("$color");

       //$myArray[$x][$y] = array('item' => "$color");
        $arrayPixels[] = $arrayPixels1;

    }

}
//access pixel values an try to create a image

$img = imagecreatetruecolor($width, $height);


for ($y = 0; $y < $height; ++$y) {
    for ($x = 0; $x < $width; ++$x) {
        imagesetpixel($img, $x, $y, $arrayPixels[$y][$x]);
    }
}

// Dump the image to the browser
header('Content-Type: image/jpg');
imagejpeg($img);

// Clean up after ourselves
imagedestroy($img);

1 Ответ

0 голосов
/ 01 ноября 2018

Ваш массив, как вы говорите, просто строки, вам нужно либо построить каждую строку, а затем добавить ее в список строк

$arrayPixels = array();
//put pixels values in an array
for($x = 0; $x < $width; $x++) {
    $row = array();
    for($y = 0; $y < $height; $y++) {
        // pixel color at (x, y)
        $row[] = imagecolorat($resource, $x, $y);

    }
    $arrayPixels[] = $row;
}

или сделайте то же самое, что и при повторном создании изображения и использовании координат x и y ...

//put pixels values in an array
for($x = 0; $x < $width; $x++) {
    for($y = 0; $y < $height; $y++) {
        // pixel color at (x, y)
       $arrayPixels[$y][$x] = imagecolorat($resource, $x, $y);

    }
}    
...