Последние статьи
- Твердотельный датчик направления и скорости ветра. Эксперимент
- iPhone на стене в качестве панели управления домом
- MegaD-16M-XT - подсветка выключателей и не только
- Переделка выключателей в кнопки и мини-обзор текущего рынка
- RadSens - модульный счетчик Гейгера с интерфейсом I2C
- "U" - значит универсальный. Обзор модуля MegaD-16U-XT
- SCD4x - современная альтернатива для измерения концентрации CO2
- HTU31D - новый датчик температуры и влажности с нагревательным элементом
- Измерение коэффициента пульсации ламп с помощью MegaD-2561
- Использование солнечных панелей в качестве датчика освещенности
- Согласование датчиков с выходом типа TTL со стандартными входами контроллера
- DPS368 - датчик атмосферного давления индустриального класса повышенной точности
- DS18B20 Waterpoof - импортзамещение
- TMP117 - высокоточный датчик температуры с интерфейсом I2C
- MegaD-16R-XT - расширитель на 16 релейных выходов
- MegaD-2561-RTC V3 - больше портов, зуммер и ИОН
Наложение даты и времени на изображение
14/12/2008 22:14:41
При выводе изображения с камеры наблюдения неплохо было бы видеть текущие дату и время, как это принято во всех системах видеонаблюдения. Поскольку на моем сервере используется Apache с установленным языком программирования PHP, сделать это несложно.
PHP-код поддерживающий прозрачность фона и текста, которые задаются в настройках, может выглядеть примерно так:
// снимок с камеры $Photo_Name = "snap/camera2.jpg" // текст $IFont_Text = date("d.m.Y H:i:s", filemtime($Photo_Name); // используемый шрифт $IFont_Name = "cadmin/fonts/DEFAULT.TTF"; // размер шрифта $IFont_Size = 9; // координата X $IFont_X = 10; // координата Y $IFont_Y = 25; // угол $IFont_Angle = 0; // позиция: 1 - вверху, 2 - по центру, 3 - внизу $IFont_Pos = 0; // цвет шрифта $IFont_Color = "FFFFFF"; // цвет фона $IFont_BG = "000000"; // прозрачность фона $IFont_BG_Transp = 0; // прозрачность $IFont_Transparency // качество изображения $Photo_Quality = 85; $background = imagecreatefromjpeg($Photo_Name); if ( $IFont_Size == 0 ) $IFont_Size = 12; if ( empty($IFont_Color) ) { if ( !empty($IFont_Transparency) ) $IFont_Color2 = imagecolorallocatealpha($background, 0, 0, 0, $IFont_Transparency); else $IFont_Color2 = imagecolorallocate($background, 0, 0, 0); } else { $IFont_Color_Red = hexdec($IFont_Color[0].$IFont_Color[1]); $IFont_Color_Green = hexdec($IFont_Color[2].$IFont_Color[3]); $IFont_Color_Blue = hexdec($IFont_Color[4].$IFont_Color[5]); if ( !empty($IFont_Transparency) ) $IFont_Color2 = imagecolorallocatealpha($background, $IFont_Color_Red, $IFont_Color_Green, $IFont_Color_Blue, $IFont_Transparency); else $IFont_Color2 = imagecolorallocate($background, $IFont_Color_Red, $IFont_Color_Green, $IFont_Color_Blue); } if ( $IFont_Pos > 0 ) { if ( $IFont_Pos == 1 ) { $IFont_X = 2; $IFont_Y = $IFont_Size+1; } elseif ( $IFont_Pos == 2 ) { $IFont_X = 1; $IFont_Y = round($h / 2); } elseif ( $IFont_Pos == 3 ) { $IFont_X = 1; $IFont_Y = $h - 1; } } else { if ( $IFont_Y == 0 ) $IFont_Y = $IFont_Y + $IFont_Size; } $IFont_Text = iconv('CP1251', 'UTF-8', $IFont_Text); if ( !empty($IFont_BG) ) { $boundingbox = imagettfbbox($IFont_Size, $IFont_Angle, $IFont_Name, $IFont_Text); $IFont_BG_Red = hexdec($IFont_BG[0].$IFont_BG[1]); $IFont_BG_Green = hexdec($IFont_BG[2].$IFont_BG[3]); $IFont_BG_Blue = hexdec($IFont_BG[4].$IFont_BG[5]); if ( !empty($IFont_BG_Transp) ) $bg_color = imagecolorallocatealpha($background, $IFont_BG_Red, $IFont_BG_Green, $IFont_BG_Blue, $IFont_BG_Transp); else $bg_color = imagecolorallocate($background, $IFont_BG_Red, $IFont_BG_Green, $IFont_BG_Blue); imagefilledrectangle($background, $boundingbox[6]+$IFont_X-1, $boundingbox[7]+$IFont_Y-1, $boundingbox[2]+$IFont_X+1, $boundingbox[3]+$IFont_Y+1, $bg_color); } imagettftext($background, $IFont_Size, $IFont_Angle, $IFont_X, $IFont_Y, $IFont_Color2, $IFont_Name, $IFont_Text); imagejpeg($background, '', $Photo_Quality); ?>
Речь в данном случае идет не о потоковом видео, а об отдельных кадрах. Как я писал в других статьях нет смысла на центральной интерфейсной странице отображать потоковое видео, которое значительно загружает сервер, локальную сеть и клиентский компьютер. Поэтому обновление кадров с помощью java-script (jQuery) в центральном интерфейсе происходит 1-2 раза в минуту. В результате мы получаем примерно следующее (камера в котельной):
Автор: Andrey_B
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.
Добавить комментарий:
Сортировка комментариев: Последние сверху | Первые сверху