如何使用 php 获取图片说明

how to get image caption using php

我正在使用 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>"; 
    }
?>

这一切都非常简单,但由于我现在还想添加图片的标题作为说明,因此我需要 extract/get 图片中的此信息。

我想我可以通过函数 exif_read_data 的方式获得它,但我不太确定如何获得标题而不是所有元数据。 . .


在使用 Whosebug 的聪明人的一点帮助下,这是最终的和实用的结果,正如我在下面的回答中看到的那样,由几个答案的点点滴滴组成。

<?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>";
}
?>

试试这个:-

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>";
}

这就是所有可以做的事情,因为大多数图片不支持这个功能,但是,你做错了,因为你得到的错误是因为找不到文件,你得到的错误是当文件找到但不受支持是这样的:

Warning: exif_read_data(file.png): File not supported in /path/to/file/file.php on line 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>";
}
?>

为了解决这个问题,我基本上使用了Windows文件浏览器,选择图像文件并在文档评论部分输入文本。
然后我按照@RamRaider 上面的建议打印了 $exif_data 并发现该文本最终出现在文件的 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>";
}
?>