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

Я использую 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

Решение

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

Предупреждение: 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>";
}
?>
1

Другие решения

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

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

Чтобы решить эту проблему, я в основном использовал файловый браузер 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