|
автор: special_ (06.09.2005 в 00:17) |
|
| Доброго времени суток ув. Дизайнер!
Я знаю, Вы можете все и теперь вопрос(просьба) ....
Есть простая фотография, каждое фото хранит в себе (дискрипшн) - тоесть дату создания его на цифровом фотоапарате, не могули бы Вы подсказать, как средствами PHP - вытащить эту дату из фото..
Жду вашего ответа с нетепрением!!! | |
|
|
|
|
|
|
|
для: special_
(06.09.2005 в 00:17)
| | Можно наверное извратится на GDLib и заняться распознаванием образов, тем более задача максимально упрощена - дата всегда находится в нижнем углу - но уж больно геморройная задача - не дешевле перебить вручную дату или нанять человека за скромное вознаграждение? | |
|
|
|
|
|
|
|
для: special_
(06.09.2005 в 00:17)
| | Вообще из фотографии , сделанной хорошим цифровым фотоаппаратом, можно извлечь модуль оборудования, камеры, светосилу, выдержку, фокусное расстояние , глубину цвета и конечно же дату снимка.
Но чем достать я не знаю, надо прочитать про это и написать либо найти готовый класс... | |
|
|
|
|
|
|
|
для: isset
(06.09.2005 в 01:01)
| | Попробуйте открыть фотографию в блокноте, там в первых же строках будет дата снимка | |
|
|
|
|
автор: special_ (06.09.2005 в 01:06) |
|
|
для: isset
(06.09.2005 в 01:01)
| | isset
Именно это и надо !!!
cheops
Есть фото, на котором нету надписи с датой... Говорят что можно вытащить ? Или это очень редкий вопрос? Так давайте его дружным колективом все решим! | |
|
|
|
|
|
|
|
для: special_
(06.09.2005 в 01:06)
| | А, если там в начале фотографии есть какая-то информация давайте её сюда - это меняет дело - с этим можно повозится - она в двоичной форме или текстовой? | |
|
|
|
|
|
|
|
для: cheops
(06.09.2005 в 01:15)
| | Всё нашёл... а у вас фотоаппарат какой? | |
|
|
|
|
автор: _isset (06.09.2005 в 01:29) |
|
|
для: cheops
(06.09.2005 в 01:21)
| | Не в фотоаппарате дело. нужно найти описание цифровых фотографий | |
|
|
|
|
|
|
|
для: _isset
(06.09.2005 в 01:29)
| | Вообще-то даже оно не нужно - там же одни двоичные данные, а дата в текстовом, поэтому простейшее регулярное выражение на дату срабатывает на ура, по крайней мере на тех образцах, что у меня под рукой
<?php
// Извлекаем содержимое файла
$filename = 'PICT0018.JPG';
$content = file_get_contents($filename);
// Извлекаем дату
preg_match('|([\d]{4}:[\d]{2}:[\d]{2} [\d]{2}:[\d]{2}:[\d]{2})|i',$content,$out);
echo $out[0];
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(06.09.2005 в 01:36)
| | Не думаю что это лучше, в своих образцах я нашел несколько разных дат, видимо одна из них дата редактирования, а вот третья не знаю, но она такая же как и дата создания... | |
|
|
|
|
|
|
|
для: _isset
(06.09.2005 в 01:29)
| | Нашел, http://www.ozhiker.com/electronics/pjmt/index.html
Скачать можно тут: http://www.ozhiker.com/electronics/pjmt/PHP_JPEG_Metadata_Toolkit_1.11.zip
Поддерживаются следующие марки фотоаппаратов:
Agfa, Canon, Casio, Contax, Epson, Fujifilm, Konica, Minolta, Kyocera, Nikon, Olympus, Panasonic, Pentax (Asahi), Ricoh и Sony | |
|
|
|
|
|
|
|
для: isset
(06.09.2005 в 01:36)
| | PS: Протестил, все работает, не думал что можно извлечь столько информации из обычной фотографии :-) | |
|
|
|
|
автор: special_ (06.09.2005 в 09:38) |
|
|
для: isset
(06.09.2005 в 01:39)
| | А у меня не получилось протестить :((
Как Вы запускали скрипт ? | |
|
|
|
|
|
|
|
для: special_
(06.09.2005 в 09:38)
| | После распаковки вы найдете в корне скрипта файл Example.php
найдите там:
<?php
// Turn off Error Reporting
error_reporting ( 0 );
|
и после добавьте:
$GLOBALS['HTTP_GET_VARS']['jpeg_fname'] = "путь/до/файла.jpg";
|
теперь можно запустить example.php из браузера | |
|
|
|
|
|
|
|
для: special_
(06.09.2005 в 09:38)
| |
<?php
$filename = "c:/photo.jpg";
error_reporting ( 0 );
$Toolkit_Dir = "./";
$GLOBALS['HIDE_UNKNOWN_TAGS'] = TRUE;
include $Toolkit_Dir . 'Toolkit_Version.php';
include $Toolkit_Dir . 'JPEG.php';
include $Toolkit_Dir . 'JFIF.php';
include $Toolkit_Dir . 'PictureInfo.php';
include $Toolkit_Dir . 'XMP.php';
include $Toolkit_Dir . 'Photoshop_IRB.php';
include $Toolkit_Dir . 'EXIF.php';
$info = get_EXIF_JPEG( $filename );
echo $info[0][34665][Data][0][36867][Data][0];
?>
|
Вот подчищенный пример, но нет гарантии что он прочитает всё правильно :-( | |
|
|
|
|
|
|
|
для: special_
(06.09.2005 в 00:17)
| | >Жду вашего ответа с нетепрением!!!
По моему, я уже не нужен :) | |
|
|
|
|
автор: special_ (07.09.2005 в 00:11) |
|
|
для: glsv (Дизайнер)
(06.09.2005 в 05:08)
| | Ну отлично, с этим разобрались..
Теперь точно нужна помощь дизайнера:
Вообщем надо полученную дату, записать на фото внизу справа, белым шрифтом. Поможете дизайнер ? | |
|
|
|
|
|
автор: special_ (07.09.2005 в 14:11) |
|
|
для: glsv (Дизайнер)
(07.09.2005 в 04:11)
| | Вот в атаче прикрепил архивчик скриптов...
Самый главный - index.php - читает дату из картинки и пишет на ней эту самую дату, остальные - дополнительные модули, с ними все нормально, они нужны лишь для того, что-бы вытащить дату.
Посмотрите пожалуйста файл index.php - что я не так делаю ? | |
|
|
|
|
автор: special_ (08.09.2005 в 20:01) |
|
|
для: special_
(07.09.2005 в 14:11)
| | Ну что? Кто-нибудь возмется ? | |
|
|
|
|
автор: sos (15.09.2005 в 16:30) |
|
|
для: special_
(08.09.2005 в 20:01)
| | sory | |
|
|
|
|
|
|
|
для: special_
(07.09.2005 в 14:11)
| | У вас переменная $dats пустая.
У меня дату получилось добыть вот такой строкой
<?
$dats = $info[0][306]["Data"][0];
?>
|
Далее все так-же.
Только в конце уберите вывод даты
Он все равно не отображается.
А используемый шрифт arbat.ttf у вас лежит в папке с кодом? | |
|
|
|
|
автор: special_ (09.09.2005 в 10:56) |
|
|
для: glsv (Дизайнер)
(09.09.2005 в 06:29)
| | Вот мой код:
<?php
$filename = "win.jpg";
error_reporting ( 0 );
$Toolkit_Dir = "./";
$GLOBALS['HIDE_UNKNOWN_TAGS'] = TRUE;
include $Toolkit_Dir . 'Toolkit_Version.php';
include $Toolkit_Dir . 'JPEG.php';
include $Toolkit_Dir . 'JFIF.php';
include $Toolkit_Dir . 'PictureInfo.php';
include $Toolkit_Dir . 'XMP.php';
include $Toolkit_Dir . 'Photoshop_IRB.php';
include $Toolkit_Dir . 'EXIF.php';
$info = get_EXIF_JPEG( $filename );
$dats = $info[0][306]["Data"][0];
// В переменной $imagefile содержится имя файла с изображением
// Если эта переменная пуста, то останавливаем выполнение скрипта
$imagefile = $filename;
// Определяем расширение
// и в зависимости от него вызываем функции создания изображений из файлов
$path_parts = pathinfo($imagefile);
$ext = $path_parts["extension"];
switch ($ext)
{
case "jpg":
$img = imagecreatefromjpeg($imagefile);
break;
case "gif":
$img = imagecreatefromgif($imagefile);
break;
default:
echo "Неизвестное расширение файла";
exit();
}
// Если изображение создано
if ($img)
{
// Назначаем цвет
$color = imagecolorallocatealpha($img, 0, 255, 0, 50);
// Пишем текст поверх изображения
$box = imagettftext($img, 50, 0, 10, 150, $color, "arial.ttf", "$dats");
// Выводим изображение в браузер
switch ($ext)
{
case "jpg":
header("Content-type: " .image_type_to_mime_type(IMAGETYPE_JPEG));
imagejpeg($img);
break;
case "gif":
header("Content-type: " .image_type_to_mime_type(IMAGETYPE_GIF));
imagegif($img);
break;
default:
echo "Неизвестное расширение файла";
exit();
}
}
?>
|
Залил шрифт: arial.ttf в папку, где лежит код. Пробовал ставить chmod 777 на картинки, всеравно не пишет ( | |
|
|
|
|
|
|
|
для: special_
(09.09.2005 в 10:56)
| | Скопировал ваш код без изменений - работает.
Выводит просто картинку без подписи? Или вообще не выводит?
Проверьте все таки есть ли дата
<?
$dats = $info[0][306]["Data"][0];
echo $dats;
exit();
?>
|
| |
|
|
|
|
автор: special_ (10.09.2005 в 15:07) |
|
|
для: glsv (Дизайнер)
(10.09.2005 в 06:15)
| | Дата хранится в переменной, все нормальноя проверил.
Но писаться поверх картинки не хочет (( | |
|
|
|
|
автор: special_ (13.09.2005 в 00:12) |
|
|
для: special_
(10.09.2005 в 15:07)
| | Помогите пожалуйста дизайнер | |
|
|
|
|
|
|
|
для: special_
(13.09.2005 в 00:12)
| | Проблема в том, что вами приведенный код у меня отрабатывает без проблем. Предположу, что проблема может быть в шрифте. Попробуйте его поменять. | |
|
|
|
|
автор: special_ (13.09.2005 в 11:49) |
|
|
для: glsv (Дизайнер)
(13.09.2005 в 08:03)
| | Поменял и все по проежнему. Скажите а у Вас скрипт пишет дату по фотографии? | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(13.09.2005 в 08:03)
| | Осмелюсь предположить, что дело в фотографиях. Если фотографии без обработки сразу с цифрового фотоаппарата, то в нем 95% должна быть дата, в самом файле.
После обработки и сохранения, этой даты, а также информации о фотоаппарате может и не быть. Вы можете легко это проверить открыв графические файлы разных форматов в ACDSee и посмотрев инфо о файле. | |
|
|
|
|
автор: glsv (Дизайнер) (13.09.2005 в 12:28) |
|
|
для: napTu3aH
(13.09.2005 в 12:26)
| | special_ говорит, что дата есть при выводе ее просто на экран с помощью echo | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(13.09.2005 в 12:28)
| | а библиотека для работы с графикой? | |
|
|
|
|
автор: special_ (13.09.2005 в 16:18) |
|
|
для: napTu3aH
(13.09.2005 в 12:31)
| | gd2
Все нормально, с картинками раньше работал, ставил фотогалерею | |
|
|
|
|
автор: special_ (14.09.2005 в 18:03) |
|
|
для: special_
(13.09.2005 в 16:18)
| | НУ что ребята ? | |
|
|
|
|
|
|
|
для: special_
(14.09.2005 в 18:03)
| | Видимо тупик.
Вот так тоже не работает?
$box = imagettftext($img, 50, 0, 10, 150, $color, "arial.ttf", "Текст");
|
И закомментарьте строку
<?
// error_reporting ( 0 );
?>
|
Может все таки ошибка где проскакивает.
Шрифт пробовали менять на другой?
>Скажите а у Вас скрипт пишет дату по фотографии?
Да, правда даты не совсем правильные, но пишет. В левом верхнем углу. | |
|
|
|
|
автор: special_ (15.09.2005 в 12:34) |
|
|
для: glsv (Дизайнер)
(15.09.2005 в 07:33)
| | Нет! Не пишет | |
|
|
|
|
автор: sos (15.09.2005 в 16:28) |
|
|
для: special_
(14.09.2005 в 18:03)
| | proverka | |
|
|
|