我使用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>";
}
?>
答案 0 :(得分:1)
这就是所有可以完成的事情,因为这个函数不支持大多数图片,但是你做错了,因为你得到的错误是因为找不到文件,你得到的错误是文件是发现并且不受支持是:
警告:exif_read_data(file.png):文件不受支持 第x行的/path/to/file/file.php
和它因为你单引用
中的变量 $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 :(得分: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>";
}
答案 2 :(得分:0)
为了解决这个问题,我基本上使用了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>";
}
?>