Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 激发Joomla Photogallery脚本:从EXIF(照片)中提取创建日期以显示在网站上_Php_Date_Joomla_Exif_Photo Gallery - Fatal编程技术网

Php 激发Joomla Photogallery脚本:从EXIF(照片)中提取创建日期以显示在网站上

Php 激发Joomla Photogallery脚本:从EXIF(照片)中提取创建日期以显示在网站上,php,date,joomla,exif,photo-gallery,Php,Date,Joomla,Exif,Photo Gallery,不确定这是否可行,但由于Stackoverflow是最好的提问地点,我们来: 我安装了一个Joomla CMS,添加了一个定制模板,添加了一个(付费)照片库,经过各种调整后,这个东西运行得相当不错 photogallery(组件)可以分层工作。你将打开网站,你将在顶层。假设您将看到4张地图:2012年、2013年、2014年和2015年。在这些顶级类别中,你可以添加无尽的子类别,最后,照片显示在各个图像页面上 组合类别示例: -主(家庭网站,基本上是顶级类别) --2015年(子类别) ---1

不确定这是否可行,但由于Stackoverflow是最好的提问地点,我们来:

我安装了一个Joomla CMS,添加了一个定制模板,添加了一个(付费)照片库,经过各种调整后,这个东西运行得相当不错

photogallery(组件)可以分层工作。你将打开网站,你将在顶层。假设您将看到4张地图:2012年、2013年、2014年和2015年。在这些顶级类别中,你可以添加无尽的子类别,最后,照片显示在各个图像页面上

组合类别示例:
-主(家庭网站,基本上是顶级类别)
--2015年(子类别)
---1月(子类别的子类别)
-----Image.jpg(位于子类别中的个人图像页面)

photogallery组件由大量文件(主要是PHP)组成。由于我不是PHP专业人士(但我对自己的方法很熟悉),所以我试图弄清楚photogallery组件在从照片中读取EXIF数据时是如何工作的

这个想法是从EXIF提取中提取照片拍摄的日期,并将其显示在各个图像页面上

据我所知,EXIF数据是用这个“函数”PHP文件提取的。代码段:

然后是用于各个图像页面的PHP文件。下一个代码显示在每张照片下面,显示的是一些东西。作者,一些技术资料(分辨率,文件类型和文件大小),还有一个鼠标悬停图标,在一个气球中显示所有提取的EXIF数据。即使是我所说的提取日期,也可以放在我想放的任何地方:

图片: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 />';
        }
echo'.strftime($ad_datef=='customdate'?$ad_datefc:$ad_datef,strotime($exif_data['DateTimeOriginal'])。
; }
同样,我将一些函数PHP代码与图像PHP文件中的原始代码混合在一起,如下所示(这段代码在图像页面上显示了照片的所有者姓名)

echo'.$link'.
; }
有没有简单的方法来产生一个字符串/代码,我可以用它来显示照片拍摄的日期?还是我需要深入挖掘


非常感谢

问题在于您的函数只查找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>';
}
$date='';
如果(isset($exif_数据['DateTimeOriginal'])!=“”){
$date=$exif_数据['DateTimeOriginal'];
}elseif(isset($exif_数据['DateTimeDigitalized'])!=“”){
$date=$exif_数据['DateTimeDigized'];
}elseif(isset($exif_数据['DateTake'])!=“”){
$date=$exif_数据['datetake'];
}elseif(isset($exif_数据['DateModified'])!=“”){
$date=$exif_数据['DateModified'];
}elseif(isset($exif_数据['Datetime'])!=“”){
$date=$exif_数据['Datetime'];
}
如果($date!=''){
$dg_-exif.=JText::“('COM_-DATSOGALLERY_-exif_-DATETIME'):”。strftime($ad_-datef=='customdate'?$ad_-datefc:$ad_-datef,strotime($date))”;
}

您好,谢谢您的回复。我试图用您的($date to}部分)替换函数文件中的原始代码(第28、29、30行),但没有任何效果。因为我在发布回复时把事情搞混了:前二个Pastebin链接(图像文件)就是我编辑的代码(测试)。这是iamge文件中的原始代码:。我是不是应该试试别的什么?谢谢!;)嗨,你确定是原版吗?!因为第21行到第25行看起来都变了。请注意,在代码的其余部分有$obj语法,没有。如果放置echo“test”,会发生什么;在这个代码中?是否显示在exif引出序号中。首先,您应该分析exif气球的html,找到生成它的文件,并尝试插入一些简单的内容,以确保您修改了正确的文件。我前面提到的代码在第374-398行。我想我用错误的代码把这个stackoverflow问题搞砸了,很抱歉。为了澄清我的问题:气球中的信息是显示的照片中的核心信息。我希望气球中的日期-照片拍摄-在其他地方单独显示(以便能够将其放在div标签中)。即使我放回这个原始文件,用您的替换28-30似乎也没有任何效果(它保持不变)。我在组件中的所有文件中查找了所有使用exif这个词的引用。我把它们放在Pastebin:datso.functions.php()-libraries\plupload\js\plupload.full.js()-libraries\plupload\js\plupload.full-1.js()-admin\images.datsogallery.php[这与以前的图像文件不同]()-admin\includes\settings.php()
$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>';
}