Я хочу перебрать все пиксели изображения, найти значение rgba этого пикселя и сделать что-то с этими пикселями.
Скажем, у меня есть изображение размером 100×100 пикселей. Я хочу найти значение каждого из этих пикселей с уже выполненной функцией:
function getPixel($image, $x, $y) { $colors = imagecolorsforindex($image, imagecolorat($image, $x, $y)); $inrgba = 'rgba(' . $colors['red'] . ',' . $colors['green'] . ',' . $colors['blue'] . ',' . $colors['alpha'] . ')'; return $inrgba; }
И сохраните эти значения вместе с размерами изображения, в массиве или массиве массивов. Я хочу использовать конечный результат на странице html.
Как мне это сделать?
for($x=1;$x<=$width;$x++) { for($y=1;$y<=$height;$y++) { $pixel=getPixel($image, $x, $y); //do something } }
Что это будет делать, так это найти каждый пиксель в каждом столбце.
i=iteration pixel coordinate = (x,y)
Для изображения размером 5 х 5 итерация будет выглядеть так:
i1 = (1,1) i2 = (1,2) i3 = (1,3) i4 = (1,4) i5 = (1,5) i6 = (2,1) i7 = (2,2) i8 = (2,3) i9 = (2,4) i10 = (2,5) i11 = (3,1) i12 = (3,2) i13 = (3,3) i14 = (3,4) i15 = (3,5) i16 = (4,1) i17 = (4,2) i18 = (4,3) i19 = (4,4) i20 = (4,5) i21 = (5,1) i22 = (5,2) i23 = (5,3) i24 = (5,4) i25 = (5,5)
Вот полный ответ, без ошибки отказа
<?php $src = '2fuse.jpg'; $im = imagecreatefromjpeg($src); $size = getimagesize($src); $width = $size[0]; $height = $size[1]; for($x=0;$x<$width;$x++) { for($y=0;$y<$height;$y++) { $rgb = imagecolorat($im, $x, $y); $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; var_dump($r, $g, $b); } }