通过php中的exif数据对图像进行排序
发布时间:2020-12-13 17:16:19 所属栏目:PHP教程 来源:网络整理
导读:我是php的新手,我正试图弄清楚如何通过exif创建日期对图像进行排序.下面的代码是我遵循的本教程中的代码: Simple Php Gallery Pagination 我只是修改了一点来检索exif数据 我正在寻找一个没有数据库的方法,目标是有一个分页库(现在它是分页的)排序最新的第
我是php的新手,我正试图弄清楚如何通过exif创建日期对图像进行排序.下面的代码是我遵循的本教程中的代码:
Simple Php Gallery Pagination
我只是修改了一点来检索exif数据 function getPictures() { global $page,$per_page,$has_previous,$has_next,$DirFoto,$DirThumb; if ( $handle = opendir($DirFoto) ) { echo '<ul id="pictures">'; $count = 0; $skip = $page * $per_page; if ( $skip != 0 ) $has_previous = true; while ( $count < $skip && ($file = readdir($handle)) !== false ) { if ( !is_dir($file) && ($type = getPictureType($file)) != '' ) $count++; } while ( $count < $per_page && ($file = readdir($handle)) !== false ) { if ( !is_dir($file) && ($type = getPictureType($file)) != '' ) { $exif = exif_read_data("$DirFoto/$file",true); if ( ! is_dir($DirThumb) ) { mkdir($DirThumb); } if ( ! file_exists($DirThumb.'/'.$file) ) { makeThumb( $file,$type ); } echo '<li><a href="'.$DirFoto.'/'.$file.'" title="Photo taken on '.date("F d Y,H:i:s",strtotime($exif['IFD0']['DateTime'])).'">'; echo '<img src="'.$DirThumb.'/'.$file.'" alt="'.date("F d Y,strtotime($exif['IFD0']['DateTime'])).'"/>'; echo '</a></li>'; $count++; } } echo '</ul>'; while ( ($file = readdir($handle)) !== false ) { if ( !is_dir($file) && ($type = getPictureType($file)) != '' ) { $has_next = true; break; } } } } 解决方法
我整理了一些代码,这是我的结果:
???? $ScriptsHead = ' <link type="text/css" media="screen" rel="stylesheet" href="./stile.css"/> <link type="text/css" rel="stylesheet" href="./js/photoswipe.css"/> <script type="text/javascript" src="./js/jquery-1.8.3.js"></script> <script type="text/javascript" src="./js/klass.min.js"></script> <script type="text/javascript" src="./js/code.photoswipe-3.0.5.min.js"></script> <script type="text/javascript" src="./js/miophotoswipe.js"></script> '; function getPictures() { global $page,$DirThumb; if ( $handle = opendir($DirFoto) ) { $skip = $page * $per_page; $images = array(); # empty data structure while(($file = readdir($handle)) !== false ) { if($file == '..' || $file == '.' || is_dir($file) || getPictureType($file) == '') continue; # only for images $exif = exif_read_data("$DirFoto/$file",true); $date = $exif['IFD0']['DateTime']; # everything you like to be ordered $images[$file] = $date; # associate each file to its date } asort($images); # sort the structure by date echo '<ul id="pictures">'; if ( $skip != 0 ) $has_previous = true; $count = -1; foreach ($images as $file => $fileDate) { $count ++; if($count < $skip) continue; if($count >= $skip + $per_page) { $has_next = true; break; } if ( ! is_dir($DirThumb) ) { mkdir($DirThumb); } if ( ! file_exists($DirThumb.'/'.$file) ) { makeThumb( $file,$type ); } echo '<li><a href="'.$DirFoto.'/'.$file.'" title="Photo taken on '.date("F d Y,strtotime($fileDate)).'">'; echo '<img src="'.$DirThumb.'/'.$file.'" alt="'.date("F d Y,strtotime($fileDate)).'"/>'; echo '</a></li>'; } echo '</ul>'; } } function getPictureType($file) { $split = explode('.',$file); $ext = $split[count($split) - 1]; if ( preg_match('/jpg|jpeg/i',$ext) ) { return 'jpg'; } else if ( preg_match('/png/i',$ext) ) { return 'png'; } else if ( preg_match('/gif/i',$ext) ) { return 'gif'; } else { return ''; } } function makeThumb( $file,$type ) { global $max_width,$max_height,$DirThumb; if ( $type == 'jpg' ) { $src = imagecreatefromjpeg($DirFoto.'/'.$file); } else if ( $type == 'png' ) { $src = imagecreatefrompng($DirFoto.'/'.$file); } else if ( $type == 'gif' ) { $src = imagecreatefromgif($DirFoto.'/'.$file); } if ( ($oldW = imagesx($src)) < ($oldH = imagesy($src)) ) { $newW = $oldW * ($max_width / $oldH); $newH = $max_height; } else { $newW = $max_width; $newH = $oldH * ($max_height / $oldW); } $new = imagecreatetruecolor($newW,$newH); imagecopyresampled($new,$src,$newW,$newH,$oldW,$oldH); if ( $type == 'jpg' ) { imagejpeg($new,$DirThumb.'/'.$file); } else if ( $type == 'png' ) { imagepng($new,$DirThumb.'/'.$file); } else if ( $type == 'gif' ) { imagegif($new,$DirThumb.'/'.$file); } imagedestroy($new); imagedestroy($src); } /* echo phpinfo(); */ ?> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |