Я применяю свой собственный алгоритм на изображениях на PHP. Алгоритм идет по трем входным изображениям по пикселям (все изображения одного размера) и устанавливает пиксель в выходном изображении:
for ($x = 0; $x < $width; $x++) { for ($y = 0; $y < $height; $y++) { $color1 = imagecolorat ($image1, $x, $y); $color2 = imagecolorat ($image2, $x, $y); $color3 = imagecolorat ($image3, $x, $y); $color4 = my_function ($color1, $color2, $color3); imagesetpixel ($image4, $x, $y, $color4); } }
Проблема в том, что это очень медленно для больших изображений, поскольку PHP является интерпретированным языком.
В PHP есть специальные методы, которые позволяют эффективно вызывать функцию для всех членов массива, например: array_map, array_filter, array_reduce, array_walk.
Существуют ли аналогичные методы для изображений, т. Е. Вызвать некоторую функцию для всех пикселей одного (или нескольких) изображений?
Или, может быть, есть способ получить доступ к изображению в виде массива в PHP?
Заранее спасибо…
В PHP есть специальные методы, которые позволяют эффективно вызывать функцию для всех членов массива
Я боюсь, вы ошибаетесь в этом заявлении.
Эти функции не настолько эффективны.
В любом случае, нет – подобных функций для библиотеки GD нет.
Вы можете искать Google для некоторой библиотеки доступа к пикселям – возможно, некоторые из них уже написаны, я считаю.