Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Преобразование массива чисел в интервалы

06.08.2016 | Категория: Web-мастеру и не только | Автор: ManHunter
По работе возникла необходимость обработать массив чисел таким образом, чтобы все последовательные значения в нем были преобразованы в интервалы. То есть массив [1, 3, 4, 5, 6, 9, 10, 15] должен превратиться в ["1", "3-6", "9-10", "15"]. Быстренько набросал вот такую функцию, может быть пригодится кому-нибудь еще.
  1. // Преобразование массива чисел в интервалы
  2. function array_to_intervals($data=array(), $divider='-') {
  3.     // Оставить только уникальные значения
  4.     $data=array_unique($data);
  5.     sort($data);
  6.  
  7.     $tmp=array();
  8.     $begin=$end=0;
  9.  
  10.     for ($i=0$i<count($data); $i++) {
  11.         // Начало интервала или одиночное значение
  12.         if ($begin==0) {
  13.             $begin=$end=$data[$i];
  14.         }
  15.  
  16.         if (isset($data[($i+1)])) {
  17.             // Расширить границы интервала
  18.             if ($data[($i+1)]==($end+1)) {
  19.                 $end++;
  20.             }
  21.             else {
  22.                 // Одиночное значение
  23.                 if ($begin==$end) {
  24.                     $tmp[]=$begin;
  25.                 }
  26.                 // Интервал
  27.                 else {
  28.                     $tmp[]=$begin.$divider.$end;
  29.                 }
  30.                 $begin=$end=0;
  31.             }
  32.         }
  33.     }
  34.  
  35.     if (count($data)) {
  36.         // Последнее значение
  37.         if ($begin==$end) {
  38.             $tmp[]=$begin;
  39.         }
  40.         else {
  41.             $tmp[]=$begin.$divider.$end;
  42.         }
  43.     }
  44.     return $tmp;
  45. }
Параметры функции: $data - массив для обработки, $divider - разделитель интервалов, по умолчанию "-", но можно задать свой, например, "...". На выходе - преобразованный массив с интервалами.

Просмотров: 2454 | Комментариев: 5

Эффект выборочного цвета на PHP

15.07.2016 | Категория: Web-мастеру и не только | Автор: ManHunter

Эффект выборочного цвета на PHP

Эффект выборочного цвета есть в некоторых фотоаппаратах Nikon, во многих графических редакторах. Сам эффект заключается в том, что на изображении цветным остается только какой-нибудь один тон, а все остальные цвета преобразуются в оттенки серого. Выборочный цвет, например, часто применяется в оформлении готических фотографий, на которых кроваво-красные цветы, элементы одежды или предметы сочетаются с мрачным черно-белым фоном.

Читать статью целиком »
Просмотров: 3102 | Комментариев: 14

Определение основного цвета изображения на PHP

04.06.2016 | Категория: Web-мастеру и не только | Автор: ManHunter
В различных поисковых системах есть возможность поиска изображения по цвету, например, "только синие" или "только зеленые". Естественно, это не означает стопроцентную синюю или зеленую заливку, а определяет преобладающий цвет картинки. Такой цвет называется основным. Алгоритм поиска основного цвета очень простой: надо просто подсчитать суммарные значения по каждому из каналов RGB для каждого пиксела изображения, а затем разделить полученные значения на общее количество пикселов. На PHP это реализуется примерно так:
  1. // Файл для определения основного цвета
  2. $im=ImageCreateFromJPEG('test.jpg');
  3.  
  4. $total_R=0;
  5. $total_G=0;
  6. $total_B=0;
  7.  
  8. // Размеры изображения
  9. $width=ImageSX($im);
  10. $height=ImageSY($im);
  11.  
  12. // Подсчитать суммарные значения по RGB
  13. for ($x=0$x<$width$x++) {
  14.     for ($y=0$y<$height$y++) {
  15.         $rgb=ImageColorAt($im,$x,$y);
  16.         $total_R+=($rgb>>16) & 0xFF;
  17.         $total_G+=($rgb>>8) & 0xFF;
  18.         $total_B+=$rgb 0xFF;
  19.     }
  20. }
  21.  
  22. // Прибраться за собой
  23. ImageDestroy($im);
  24.  
  25. // Определение значений RGB основного цвета
  26. $avg_R=round($total_R/$width/$height);
  27. $avg_G=round($total_G/$width/$height);
  28. $avg_B=round($total_B/$width/$height);
Код минимально необходимый, никаких проверок на наличие файла или корректность его внутреннего формата не производится, это вы можете сделать самостоятельно. После выполнения кода получаются три значения каналов RGB основного цвета изображения.

Читать статью целиком »
Просмотров: 9284 | Комментариев: 4

PCL's Sendmail Emulator 1.3

27.04.2016 | Категория: Мои программы | Автор: ManHunter

PCL's Sendmail Emulator

Sendmail Emulator предназначен для эмуляции программы sendmail при отладке php-скриптов на локальном сервере под Windows. Эмулятор написан для личных нужд, функционал только тот, что был мне необходим. Все письма, отправленные при помощи функции mail(), складываются в заданную папку со всеми заголовками. Для установки программы надо распаковать папку sendmail в удобное для вас место, например в папку с PHP. Никаких записей в систему Sendmail Emulator не вносит, все настройки хранятся в файле конфигурации в папке с программой. После установки эмулятора в файле php.ini надо отредактировать секцию [mail function]:

[mail function]
smtp =
smtp_port =
sendmail_from =
sendmail_path = "полный_путь_к_sendmail\sendmail.exe"

Настройки самого эмулятора выполняются в файле sendmail.ini. Вот краткое описание всех параметров, которые для этого используются.

Читать статью целиком »
Просмотров: 8777 | Комментариев: 17

Распознавание лиц на фотографии с помощью PHP

04.03.2016 | Категория: Web-мастеру и не только | Автор: ManHunter

Распознавание лиц на фотографии с помощью PHP

В социальных сетях давно используется такая функция, как "укажи людей на фотографии". Вы загружаете файл изображения, а скрипт подсвечивает на нем лица людей. Как это делается? Предположу, что у каждой социальной сети используются свои инструменты, доступа к которым со стороны никто не даст. Есть готовые бесплатные инструменты, например, PHP Facedetect, но они требуют доступ к серверу, чтобы установить необходимые компоненты. Это можно сделать только на выделенных серверах, пользователям недорогого виртуального хостинга вряд ли кто-то даст такую возможность. А еще есть общедоступный сервис Microsoft Project Oxford Face, который позволяет разработчикам определять на фотографиях лица, а также пол и примерный возраст людей. Для этого надо зарегистрироваться, получить персональный ключ, и можно передавать файлы на обработку. Вроде бы все хорошо и правильно. Но официальные SDK есть только для дотнета и Java, да и количество бесплатных обращений к сервису ограничено. Вот этим сервисом я и заинтересовался.

Читать статью целиком »
Просмотров: 7270 | Комментариев: 9

01 ... 11 12 13 14 15 16 17 ... 26
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2025
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 3 (0.0053 сек.) / Память: 4.5 Mb
Наверх