Последние статьи из блога
- MegaD-485-TTL - изолированный конвертер индустриального класса
- MegaD-4VC - подключаем сигналы 0-10В и 4-20мА к контроллеру
- MegaD-4CM - высокоточный 4-х канальный измеритель тока
- MegaD-4US - 4-х канальный датчик напряжения на DIN-рейку
- Как я боролся с собаками с помощью нейросети
- Интеграция ультразвукового датчика скорости и направления ветра
- Установка WiFi-камеры на робота-газонокосилку
- Твердотельный датчик направления и скорости ветра. Эксперимент
- iPhone на стене в качестве панели управления домом
- MegaD-16M-XT - подсветка выключателей и не только
- Переделка выключателей в кнопки и мини-обзор текущего рынка
- RadSens - модульный счетчик Гейгера с интерфейсом I2C
- "U" - значит универсальный. Обзор модуля MegaD-16U-XT
- SCD4x - современная альтернатива для измерения концентрации CO2
- HTU31D - новый датчик температуры и влажности с нагревательным элементом
- Измерение коэффициента пульсации ламп с помощью MegaD-2561
Наложение даты и времени на изображение
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
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.
Добавить комментарий:
Сортировка комментариев: Последние сверху | Первые сверху
