Опрос


Что для Вас Умный Дом?


Результаты


Реклама


Наложение даты и времени на изображение

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



Добавить комментарий:



Сортировка комментариев: Последние сверху | Первые сверху