不确定这是否有效,但由于Stackoverflow是最好的地方,我们走了:
我安装了Joomla CMS,添加了一个自定义模板,添加了一个(付费)照相馆,经过各种调整后,这个东西运行得相当不错。
照相馆(组件)分层工作。您将打开该网站,您将进入顶层。假设您将看到4张地图:2012年,2013年,2014年和2015年。在这些顶级类别中,您可以添加无数的子类别,最后,还会有单张图像页面上显示的照片。
示例组合类别:
- 主要(主页,基本上是顶级类别)
- 2015(子类别)
--- 1月(子类别的子类别)
----- Image.jpg(位于1月子类别内的单个图像页面)
photogallery组件包含大量文件(主要是PHP)。由于我不是PHP-pro(但我确实知道我的方式),我试图弄清楚照相馆组件如何工作,因为它从照片中读取EXIF数据。
我们的想法是从EXIF提取中提取照片的日期,并将其显示在各个图像页面上。
根据我的发现,EXIF数据正在使用这个'函数'PHP文件进行提取。代码段:http://pastebin.com/hT40vJnj
然后,有单个图像页面的PHP文件。下一个代码显示在每张照片下方,并显示了一些内容。作者,一些技术内容(分辨率,文件类型和文件大小),还有一个鼠标悬停图标,显示气球中所有提取的EXIF数据。甚至是我正在谈论的提取和能够随时随地丢弃的日期:http://pastebin.com/RzbjkP4e
图片:EXIF气球(i.stack.imgur.com/S7Njc.png)
我已经尝试的下一次尝试(可能是一个愚蠢的尝试)不起作用。我只是尝试从函数PHP文件中复制一些代码,并尝试将其与图像PHP文件中的下一个代码混合:
echo '<i style="margin: 0 3px;cursor:default" class="icon-male dgtt-sw" title="'.JText::_('COM_DATSOGALLERY_EXIF_DATETIME').'"></i> '.strftime($ad_datef == 'customdate' ? $ad_datefc : $ad_datef, strtotime($exif_data['DateTimeOriginal'])).'<br />';
}
再次,我将PHP代码的一些函数与图像PHP文件中的原始代码混合在一起,如下所示(这段代码显示了图像页面上照片的所有者名称)
echo '<i style="margin: 0 3px;cursor:default" class="icon-male dgtt-sw" title="'.JText::_('COM_DATSOGALLERY_INDIVIDUAL_AUTHOR').'"></i> '.$link.'<br />';
}
有没有简单的方法来提供一个字符串/代码,我可以用它来显示拍摄照片的日期?或者我需要深入挖掘?
非常感谢!
答案 0 :(得分:0)
问题是你的功能正在寻找DateTimeOriginal 不幸的是,这个领域并不总是由相机提供 您可以使用的其他可能字段代替DateTimeOriginal:
要检查您使用的所有字段,请使用var_dump($ exif_data);
因此,要扩展当前行为,您必须修改EXIF php文件,将$ exif_data ['DateTimeOriginal'] if语句(pastebin中的第28,29,30行)替换为:
$date = '';
if (isset ($exif_data['DateTimeOriginal']) != '') {
$date = $exif_data['DateTimeOriginal'];
} elseif (isset ($exif_data['DateTimeDigitized']) != '') {
$date = $exif_data['DateTimeDigitized'];
} elseif (isset ($exif_data['DateTaken']) != '') {
$date = $exif_data['DateTaken'];
} elseif (isset ($exif_data['DateModified']) != '') {
$date = $exif_data['DateModified'];
} elseif (isset ($exif_data['Datetime']) != '') {
$date = $exif_data['Datetime'];
}
if ($date != '') {
$dg_exif .= JText::_('COM_DATSOGALLERY_EXIF_DATETIME').': <span>'. strftime($ad_datef == 'customdate' ? $ad_datefc : $ad_datef, strtotime($date)).'</span>';
}