2014-09-08 1 views
3

Я создаю сайт для клиента, которому нужна фотогалерея, и я собирался использовать имя файла в качестве тега alt, но он хочет, чтобы я использовал ключевые слова, которые он поместил в данные EXIF - Поскольку я не фотограф, я действительно не понимаю технической стороны этого, но у меня есть сценарий, работающий до сих пор, чтобы получить имя файла, и я надеюсь, что это будет так же просто, как изменить несколько строк кода для получения EXIF ​​вместо имени файла. Вот мой код:Извлечение данных EXIF ​​с использованием PHP

<?php 
//The directory to your images folder, with trailing slash 
$dir = "cms/gallery/photo/"; 

//Set the extensions you want to load, seperate by a comma. 
$extensions = "jpeg,jpg"; 

//Set the number of images you want to display per page 
$imagesPerPage = 3; 

//Set the $page variable 
if(!isset($_GET['page'])){ 
    $page = 1; 
}else{ 
    $page = $_GET['page']; 
} 

//Load all images into an array 
$images = glob($dir."*.{".$extensions."}", GLOB_BRACE); 

//Count the number of images 
$totalImages = count($images); 

//Get the total pages 
$totalPages = ceil($totalImages/$imagesPerPage); 

//Make sure the page you are on is not greater then the total pages available. 
if($page > $totalPages){ 
    //Set the currnet page to the total pages. 
    $page = $totalPages; 
} 

//Now find where to start the loading from 
$from = ($page * $imagesPerPage) - $imagesPerPage; 

//Now start looping 
for($i = $from; $i < ($from + $imagesPerPage); $i++){ 
    //We need to make sure that its within the range of totalImages. 
    if($i < $totalImages){ 
     $filename = explode('.', basename($images[$i])); // GET EXIF DESCRIPTION AS $FILENAME 
     //Now we can display the image! 
     echo " 

      <div class='galleryCellHolder'> 
       <div class='galleryCell'> 
        <a class='fancybox' rel='group' href='{$images[$i]}'><img class='galleryPhoto' src='{$images[$i]}' alt='" . $filename[0] . "'></a> 
       </div> 
      </div> 

     "; 
    } 
} 

//Now to display the page numbers! 
for($p = 1; $p <= $totalPages; $p++){ 
    if($p == $page){ 
     $tmp_pages[] = "<a class='noPagination'>{$p}</a>"; 
    }else{ 
     $tmp_pages[] = "<a class='pagination' href='?page={$p}'>{$p}</a>"; 
    } 
} 
?> 
<div class="clearLeft"></div> 
<div id="pagination"> 
    <?php 

    //Now display pages, seperated by a hyphon. 
    echo "<br />" . implode("", $tmp_pages); 

    ?> 
</div> 
+2

Вы посмотрели http://php.net/manual/en/book.exif.php? – Reeno

+0

Или даже этот метод, если это помогает? http://php.net/manual/en/function.exif-read-data.php – scrineym

+0

Спасибо @Reeno, но я действительно не знаю, что я на самом деле извлекаю - любые указатели на код примера, который я дал? – user3177012

ответ

1

ли это:

$filedata = exif_read_data($images[$i]); 
if(is_array($filedata) && isset($filedata['ImageDescription'])){ 
    $filename = $filedata['ImageDescription']; 
} else{ 
    $filename = explode('.', basename($images[$i])); 
    $filename = $filename[0]; 
} 

Если FileName не в данных EXIF, $filename будет содержать имя файла из пути.

Правильное имя может отличаться от $filedata['ImageDescription']. Он может также находиться в, например, $filedata['FileName'] или $filedata['Title']. Посмотрите сами, какой из них работает

+0

Спасибо, но я получаю' Fatal error: вызов неопределенной функции exif_read_data() в C: \ AppServ \ '- мне нужно включить эту функцию в PHP? – user3177012

+0

@ user3177012 в 'php.ini' вам нужно удалить точку с запятой перед' extension = php_exif.dll' – Jonan

+0

Да, я проверил это, и перед ним нет точки с запятой - Любая другая причина ошибки ? – user3177012

 Смежные вопросы

  • Нет связанных вопросов^_^