Быстрый поиск
Введите фрагмент названия статьи для поиска
Эффект пикселизации на PHP
28.09.2016 | Категория: Web-мастеру и не только | Автор: ManHunter
Эффект пикселизации на PHP
Очередная реализация графических эффектов на PHP. На этот раз будет эффект пикселизации. Он заключается в следующем: изображение делится на квадраты (блоки) нужного размера, в каждом из них определяется основной цвет, затем выполняется заливка квадрата полностью этим цветом. Да, я в курсе про существование штатной функции PHP imagefilter с параметром IMG_FILTER_PIXELATE, но "ручная" реализация шире по возможностям и гораздо полезнее для мозгов.
Читать статью целиком »
Просмотров: 3270 | Комментариев: 6
Обфускация строк на PHP
07.09.2016 | Категория: Web-мастеру и не только | Автор: ManHunter
За несколько лет исследований различных кодировщиков и обфускаторов PHP-скриптов я изучил все используемые в них приемы сокрытия значений текстовых строк. Это могут быть названия функций или какие-то данные, которые должны быть представлены в виде строки. Так вот, во всех разобранных крипторах и обфускаторах символы в строке кодировались всего лишь несколькими способами: вариации преобразования строки из последовательности base64, декодирование из URL-encoded символов, escape-последовательности, упаковка строки в бинарные данные или результат функции chr по ординалу символа. Все подобные преобразования легко поддаются статическому анализу и декодированию типа замены по регулярным выражениям, то есть надежность сокрытия данных стремится к нулю.В очередной раз экспериментируя с PHP, я решил на практике проверить, как поведет себя оператор инкремента и декремента в случае нецифровых значений. Согласно документации, при выполнении инкремента строковых переменных PHP следует соглашениям Perl, и рассматривает строку как условное число с базой значащих символов в диапазоне [a-z], [A-Z] и [0-9], причем одновременно. Проще всего это понять на следующих примерах:
Code (PHP) : Убрать нумерацию
- $a='K';
- $a++;
- echo $a;
- // L
Code (PHP) : Убрать нумерацию
- $a='a6';
- $a++;
- echo $a;
- // a7
Code (PHP) : Убрать нумерацию
- $a='fZ9';
- $a++;
- echo $a;
- // gA0
Code (PHP) : Убрать нумерацию
- $a='ZZ';
- $a++;
- echo $a;
- // AAA
Читать статью целиком »
Просмотров: 3989 | Комментариев: 10
Преобразование массива чисел в интервалы
06.08.2016 | Категория: Web-мастеру и не только | Автор: ManHunter
По работе возникла необходимость обработать массив чисел таким образом, чтобы все последовательные значения в нем были преобразованы в интервалы. То есть массив [1, 3, 4, 5, 6, 9, 10, 15] должен превратиться в ["1", "3-6", "9-10", "15"]. Быстренько набросал вот такую функцию, может быть пригодится кому-нибудь еще.Code (PHP) : Убрать нумерацию
- // Преобразование массива чисел в интервалы
- function array_to_intervals($data=array(), $divider='-') {
- // Оставить только уникальные значения
- $data=array_unique($data);
- sort($data);
- $tmp=array();
- $begin=$end=0;
- for ($i=0; $i<count($data); $i++) {
- // Начало интервала или одиночное значение
- if ($begin==0) {
- $begin=$end=$data[$i];
- }
- if (isset($data[($i+1)])) {
- // Расширить границы интервала
- if ($data[($i+1)]==($end+1)) {
- $end++;
- }
- else {
- // Одиночное значение
- if ($begin==$end) {
- $tmp[]=$begin;
- }
- // Интервал
- else {
- $tmp[]=$begin.$divider.$end;
- }
- $begin=$end=0;
- }
- }
- }
- if (count($data)) {
- // Последнее значение
- if ($begin==$end) {
- $tmp[]=$begin;
- }
- else {
- $tmp[]=$begin.$divider.$end;
- }
- }
- return $tmp;
- }
Просмотров: 2234 | Комментариев: 5
Эффект выборочного цвета на PHP
15.07.2016 | Категория: Web-мастеру и не только | Автор: ManHunter
Эффект выборочного цвета на PHP
Эффект выборочного цвета есть в некоторых фотоаппаратах Nikon, во многих графических редакторах. Сам эффект заключается в том, что на изображении цветным остается только какой-нибудь один тон, а все остальные цвета преобразуются в оттенки серого. Выборочный цвет, например, часто применяется в оформлении готических фотографий, на которых кроваво-красные цветы, элементы одежды или предметы сочетаются с мрачным черно-белым фоном.
Читать статью целиком »
Просмотров: 2899 | Комментариев: 14
Определение основного цвета изображения на PHP
04.06.2016 | Категория: Web-мастеру и не только | Автор: ManHunter
В различных поисковых системах есть возможность поиска изображения по цвету, например, "только синие" или "только зеленые". Естественно, это не означает стопроцентную синюю или зеленую заливку, а определяет преобладающий цвет картинки. Такой цвет называется основным. Алгоритм поиска основного цвета очень простой: надо просто подсчитать суммарные значения по каждому из каналов RGB для каждого пиксела изображения, а затем разделить полученные значения на общее количество пикселов. На PHP это реализуется примерно так:Code (PHP) : Убрать нумерацию
- // Файл для определения основного цвета
- $im=ImageCreateFromJPEG('test.jpg');
- $total_R=0;
- $total_G=0;
- $total_B=0;
- // Размеры изображения
- $width=ImageSX($im);
- $height=ImageSY($im);
- // Подсчитать суммарные значения по RGB
- for ($x=0; $x<$width; $x++) {
- for ($y=0; $y<$height; $y++) {
- $rgb=ImageColorAt($im,$x,$y);
- $total_R+=($rgb>>16) & 0xFF;
- $total_G+=($rgb>>8) & 0xFF;
- $total_B+=$rgb & 0xFF;
- }
- }
- // Прибраться за собой
- ImageDestroy($im);
- // Определение значений RGB основного цвета
- $avg_R=round($total_R/$width/$height);
- $avg_G=round($total_G/$width/$height);
- $avg_B=round($total_B/$width/$height);
Читать статью целиком »
Просмотров: 9071 | Комментариев: 4