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
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.