Добавить в корзинуПозвонить
Найти в Дзене
WebTechnology

Как узнать цвет пикселя в PHP

Все мы пользовались инструментом "Пипетка" в Paint, Photoshop и других графических редакторах, который позволяет узнать цвет пикселя в заданной точке. И как узнать цвет пикселя в PHP, мы разберём прямо сейчас. Для того, чтобы узнать цвет в определённой точке изображения в PHP достаточно использовать всего лишь одну функцию - imageColorAt(): <?php
//Загрузка JPG-изображения из файла Image.jpg
  $image = imageCreateFromJpeg("Image.jpg");
//Возвращаем цвет пикселя с координатами (10, 15) на изображении $image
  $color = imagecolorat($image, 10, 15);
//Получаем составляющие цвета (red, green, blue)
  $r = ($color >> 16) & 0xFF;
  $g = ($color >> 8) & 0xFF;
  $b = $color & 0xFF;
//Выводим результат
  echo $r."<br />";
  echo $g."<br />";
  echo $b."<br />";
//Освобождаем ресурсы сервера
  imageDestroy($image);
?> Единственный непростой момент - это получение составляющих цвета. Знак ">>" сдвигает все значащие биты вправо. Размер сдвига определяется числом, идущим после ">>". Один

Все мы пользовались инструментом "Пипетка" в Paint, Photoshop и других графических редакторах, который позволяет узнать цвет пикселя в заданной точке. И как узнать цвет пикселя в PHP, мы разберём прямо сейчас.

Для того, чтобы узнать цвет в определённой точке изображения в PHP достаточно использовать всего лишь одну функцию - imageColorAt():

<?php
//Загрузка JPG-изображения из файла Image.jpg
  $image = imageCreateFromJpeg("Image.jpg");
//Возвращаем цвет пикселя с координатами (10, 15) на изображении $image
  $color = imagecolorat($image, 10, 15);
//Получаем составляющие цвета (red, green, blue)
  $r = ($color >> 16) & 0xFF;
  $g = ($color >> 8) & 0xFF;
  $b = $color & 0xFF;
//Выводим результат
  echo $r."<br />";
  echo $g."<br />";
  echo $b."<br />";
//Освобождаем ресурсы сервера
  imageDestroy($image);
?>

Единственный непростой момент - это получение составляющих цвета. Знак ">>" сдвигает все значащие биты вправо. Размер сдвига определяется числом, идущим после ">>". Один сдвиг вправо эквивалентен делению на 2.

Знак "&" означает "Побитовое И". Простой пример:

<?php
  $n1 = decbin(10);
  $n2 = decbin(14);
  echo $n1."<br />";
  echo $n2."<br />";
  echo $n1 & $n2;
?>

Здесь мы переводим числа 10 и 14 из десятичной системы счисления в двоичную с помощью функции decbin(). Те, кто хоть немного понимают в различных системах счисления сразу поймут, что в переменные n1 и n2 запишутся числа "1010" и "1110" соответственно. Далее мы выполняем операцию "Побитовое И" и получаем на выходе "1010", так как только 2-й и 4-й разряды у обоих операндов имеют 1. Надеюсь, понятно объяснил.

Когда я писал прошивку для микроконтроллеров, то разобрался в этих системах счисления, во всех этих битовых операциях ОЧЕНЬ хорошо. Однако, до этого я имел очень смутное представление о их значении и прекрасно программировал. Так что, в принципе, Вы можете не вдумываться во всё это, а в данном случае просто скопировать получение составляющих цвета, либо вообще пользоваться только переменной color. Однако, если Вы будете серьёзно заниматься программирование, то изучить системы счисления придётся - это я гарантирую!