|
|
|
| Какую информацию (по максимуму) можно вытащить из jpeg и gif файлов?
И каким образом?
буду благодарен за любой докид. | |
|
|
|
|
|
|
|
для: DJ Paltus
(29.07.2005 в 18:05)
| | Если, допустимо использование библиотеки GDLib, то можно узнать высоту и ширину изображения http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=5215
При помощи функциций GDLib http://www.softtime.ru/group/id_group=15 можно вообще говоря много информации из графических файло извлечь... | |
|
|
|
|
|
|
|
для: cheops
(29.07.2005 в 18:12)
| | Думаю, еще можно взять несколько (100-200) байт из середины самого файла. Вариант? Комбинация байтов, кодирующих изображение, для каждого файла будет уникальна. Тем более, если брать не из фиксированной позиции в файле, а, например, из середины ($позиция_чтения = filesize('путь/к/файлу.jpeg') / 2). | |
|
|
|
|
|
|
|
для: JC_Piligrim
(01.08.2005 в 09:46)
| | А если там будет последовательность бинарная одинаковых бит? Выглядит не очень надёжно и определённо, при этом из-за нескольких байт придётся открывать весь файл функциями PHP, а это будет занимать память эквивалентную объёму файла. | |
|
|
|
|
|
|
|
для: cheops
(01.08.2005 в 11:33)
| | Так именно это и требуется!!! Узнать, существует ли уже файл с таким же содержанием, дабы не распространять клонов. Я проникся идеей DJ_Paltus'а . Берем данные о параметрах загружаемого на сервер изображения с помощью GD_Lib + бинарные данные для пущей верности, md5() это все, и сравниваем с таким же образом полученными показателями других файлов, уже существующих на сервере, которые можно хранить в базе. В итоге, ресурсы тратятся только на получение этих "отпечатков" из одного файла, и сравнению с уже имеющимися отпечатками. Если таковые есть - картинку не пущать, ибо клон она. А что касается расходуемой памяти - эсли это не какие-нибудь сверхчеткие полиграфические снимки, а именно фотки для фотоальбома (с лимитируемым размером), то данная проблема отпадает. ;)
2DJ_Paltus: А как идея заводить для каждого пользователя каталог, дабы не валить все картинки в кучу? Или уже реализовано?
P.S. 2cheops: данная тема возникла из http://softtime.ru/forum/read.php?id_forum=1&id_theme=5848&page=2 | |
|
|
|
|
|
|
|
для: JC_Piligrim
(01.08.2005 в 13:36)
| | О пользователях лично у меня пока что речь не идет, но если и буду заводить, то не по папкам, а по категориям из БД.
В данный момент столкнулся с такой проблемой, что у меня не хочет работать ни одна функция из exif-ных. Без них я не могу высосать нужные фишки из exif-заголовка jpeg. Завтра буду на работе, сделаю то, что смогу протестировать.
Кстати, выдергивать из середины файла последовательность байт - мне не очень идея нравится. Хочется обойтись параметрическими данными. | |
|
|
|
|
|
|
|
для: DJ Paltus
(01.08.2005 в 17:04)
| | Вот что получилось.
<?php
Error_Reporting(E_ALL & ~E_NOTICE);
$uploaded_file="photo/1.jpg";
$size_img = getimagesize($uploaded_file);
$size_fle = filesize($uploaded_file);
//$type_fle = mime_content_type($uploaded_file);
$fingerprint=$size_img[0].$size_img[1].$size_fle.$type_fle; //формируем имя из набора индивидуальных признаков. К сожалению, функция mime_content_type у меня не работает.
$f=explode(".",$uploaded_file);
$ext=$f[1];
$dst_name=md5($fingerprint).".".$ext;
echo $fingerprint; //отпечаток пальцев, что-то типа 60080088340
echo "<br />";
echo $dst_name; //и имя - что-то типа 838a0c4ffa6f20db81dd2ca57b929eb7.jpg
?>
|
Но у меня до сих пор не хотят работать функции exif, не могу скачать нигде библиотеку php_exif.dll. Может, есть у кого лишняя?
Неплохо было бы еще узнать, есть ли в заголовке jpeg информация о количестве цветов и как бы ее оттуда достать. | |
|
|
|
|
|
|
|
для: DJ Paltus
(02.08.2005 в 13:29)
| | >Но у меня до сих пор не хотят работать функции exif, не могу
>скачать нигде библиотеку php_exif.dll. Может, есть у кого
>лишняя?
А для какой версии PHP? | |
|
|
|
|
|
|
|
для: cheops
(02.08.2005 в 13:35)
| | PHP Version 4.3.10 | |
|
|
|
|
|
|
|
для: DJ Paltus
(02.08.2005 в 13:29)
| | > Но у меня до сих пор не хотят работать функции exif, не могу
> скачать нигде библиотеку php_exif.dll
Здесь есть особенность установки.
Для подключения exif-функций, читающих информацию из заголовков файлов форматов JPEG и TIFF необходимо таким же образом подключить библиотеки php_mbstring.dll и php_exif.dll. Библиотека php_mbstring.dll должна быть подключена первой.
Для вступления изменений в силу следует перегрузить сервер Apache. При успешной установке библиотеки, в таблице генерируемой функцией phpinfo() должен появится раздел exif.
Библиотеку php_exif.dll от php 4.3.x прикладываю. Может быть подойдет. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(02.08.2005 в 14:52)
| | цитирую:
Приложение или библиотека z:\usr\local\php\extensions\php_exif.dll не является образом программы для Windows NT. Проверьте назначение установочного диска.
На этом Апач радостно вызывает ошибку и дохнет.
php_mbstring я себе поставил, правда, тоже от непонятно какой версии. И очередость строк в php.ini поменял. Наверное, надо поменять всё. Типа, 5-й пхп скачать.... | |
|
|
|
|
|
|
|
для: DJ Paltus
(02.08.2005 в 15:16)
| | >цитирую:
Занятно. Вы, кстати, php как модуль или как CGI подключаете?
Подбор библиотек - неблагодарное дело. Не ясно: то ли в библиотеке проблема, то ли в настроечных файлах. Лучше скачайте полный дистрибутив PHP. Нужные библиотеки там есть. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(03.08.2005 в 09:25)
| | Вопрос был ребром! Я не знаю, как я подключаб РНР, вернее, как его подключает Денвер. Думаю, надо как-то изучить этот вопрос. :) | |
|
|
|
|
|
|
|
для: DJ Paltus
(03.08.2005 в 14:17)
| | Базовый комплект Денвера подключает PHP как модуль. А другие версии из пакетов расширений - как CGI. | |
|
|
|