как получить заголовок изображения с помощью php

1

Я использую PHP, чтобы поместить все изображения в заданную папку в слайд-шоу. Это отлично работает в следующем коде:

<?php
//get all image files with a .jpg extension.
$images = glob("" . $directory . "*.jpg");

$imgs = array();
// create array
foreach($images as $image){ $imgs[] = "$image"; }

/****** Display Images ******/
foreach ($imgs as $img) {
    //I would like to get the image title here, to put in the echo below    
    echo "<div><img src='$img' border='0' width=\"100%\" height=\"100%\"/ /></div>"; 
    }
?>

Все это проходит довольно легко, но поскольку теперь я хотел бы добавить заголовки изображений в виде титров, мне нужно извлечь/получить эту информацию с изображения.

Я думаю, что могу получить что-то в соответствии с функциями exif_read_data, но я не совсем уверен, как получить название, а не все метаданные. , ,


С небольшой помощью от умных людей, использующих stackoverflow, это окончательный и функциональный результат, как и в моем ответе ниже, и снова, сделанный с битами и частями из нескольких ответов.

<?php
/*
This script will print the image files in a given folder, along with their image description (title in windows file explorer).
*/

// Set the directory where the files reside
$directory = $GLOBALS['directory'];

//get all image files with a .jpg extension.
$imagenpath = glob("" . $directory . "*.jpg");

$imgs = array();
// create array
foreach($imagenpath as $image){ $imgs[] = "$image"; }

// Print each image file with the ImageDescription (the title/caption) in the ALT field
foreach ($imgs as $img) {
    $exif_data = exif_read_data($img, 'IFD0');
    $exif_description = "";
    if (!empty($exif_data['ImageDescription'])) 
        $exif_description = $exif_data['ImageDescription'];

    echo "<div><img src='$img' alt='$exif_description' border='0' width=\"100%\" height=\"100%\"/ /></div>";
}
?>
  • 1
    Где находится заголовок изображения? Также foreach($images as $image){ $imgs[] = "$image"; } кажется ненужным.
  • 0
    Результаты, возвращаемые из exif_read_data , возвращаются из памяти в многомерный массив, и детали в данных exif полностью зависят от того, что их exif_read_data , и от того, были ли они отредактированы / изменены вообще. Вам нужно будет проанализировать возвращаемый массив и выбрать нужные вам биты.
Показать ещё 1 комментарий
Теги:
image
get
title
caption

3 ответа

1
Лучший ответ

это все, что можно сделать, потому что большинство изображений не поддерживается этой функцией, хотя вы делаете это неправильно, потому что ошибка, которую вы получаете, состоит в том, что файл не найден, ошибка, которую вы получаете, когда файл найден и является не поддерживается:

Предупреждение: exif_read_data (file.png): файл не поддерживается в /path/to/file/file.php в строке x

и его, потому что вы одиночный процитировали переменную в

    $exif_data = exif_read_data($img, 'IFD0');

код может быть меньше символов, это мое решение:

<?php
/*
This script will print the image files in a given folder, along with their image description (title in windows file explorer).
*/

// Set the directory where the files reside
$directory = $GLOBALS['directory'];

//get all image files with a .jpg extension.
$imgs = glob($directory . "*.jpg");

// Print each image file with the ImageDescription (the title/caption) in the ALT field
foreach ($imgs as $img) {
    $exif_data = exif_read_data($img, 'IFD0');
    if (!empty($exif_data['ImageDescription'])) 
        $exif_description = $exif_data['ImageDescription'];

    echo "<div><img src=\"$img\" alt=\"$exif_description\" border=\"0\" width=\"100%\" height=\"100%\"/ /></div>";
}
?>
  • 0
    Спасибо, приятель - я упустил это из виду!
  • 0
    Это была в основном последняя часть головоломки, с другой информацией выше, теперь она работает!
Показать ещё 4 комментария
0

Чтобы решить эту проблему, я в основном использовал браузер файлов Windows, выбрал файл изображения и ввел текст в раздел комментариев к документу.
Затем я напечатал $exif_data как было предложено выше, @RamRaider и выяснил, что этот текст заканчивается в ImageDescription файла.

Как только я прибил ошибки в моем скрипте, а также с помощью @Abdallah Samman, это было не так много!

Всем спасибо...

Следующее работает прекрасно:

<?php
/*
This script will print the image files in a given folder, along with their image description.
*/

// Set the directory where the files reside
$directory = $GLOBALS['directory'];

//get all image files with a .jpg extension.
$imagenpath = glob("" . $directory . "*.jpg");

$imgs = array();
// create array
foreach($imagenpath as $image){ $imgs[] = "$image"; }

// Print each image file with the ImageDescription (the caption) in the ALT field
foreach ($imgs as $img) {
    $exif_data = exif_read_data($img, 'IFD0');
    $exif_description = "";
    if (!empty($exif_data['ImageDescription'])) 
        $exif_description = $exif_data['ImageDescription'];

    echo "<div><img src='$img' alt='$exif_description' border='0' width=\"100%\" height=\"100%\"/ /></div>";
}
?>
0

Попробуй это :-

foreach (glob("*.jpg") as $filename) {
    $name = basename($filename, '.jpg');
    echo "<div><img src='$filename' title='$name' alt='$name' border='0' width=\"100%\" height=\"100%\"/ /></div>";
}
  • 0
    Я получаю синтаксическую ошибку в первой строке. , , Разве этот код не получил бы что-то еще, кроме заголовка изображения?
  • 0
    Это работает нормально на моей стороне. В функции glob укажите путь всех ваших изображений. exp: - images / *. jpg
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню