-réécriture de la fonction create_thumb: pour les images format portrait, les vignettes sont redimensionner à 300px de large, puis cropées à 300x200. Toutes les vignettes sont au format paysage. -quelques corrections de bugs
556 lines
17 KiB
PHP
556 lines
17 KiB
PHP
<?php
|
||
|
||
function _pr($d) {
|
||
echo "<div style='border: 1px solid#ccc; padding: 10px;'>";
|
||
echo '<strong>' . debug_backtrace()[0]['file'] . ' ' . debug_backtrace()[0]['line'] . '</strong>';
|
||
echo "</div>";
|
||
echo '<pre>';
|
||
if(is_array($d)) {
|
||
print_r($d);
|
||
} else if(is_object($d)) {
|
||
var_dump($d);
|
||
}
|
||
echo '</pre>';
|
||
}
|
||
|
||
/**
|
||
* Simple helper to debug to the console
|
||
*
|
||
* @param Array, Object, String $data
|
||
* @return String
|
||
*/
|
||
function debug_to_console( $data ) {
|
||
$output = '';
|
||
|
||
if ( is_array( $data ) ) {
|
||
$output .= "<script>console.warn( 'Debug Objects with Array.' ); console.log( '" . implode( ',', $data) . "' );</script>";
|
||
} else if ( is_object( $data ) ) {
|
||
$data = var_export( $data, TRUE );
|
||
$data = explode( "\n", $data );
|
||
foreach( $data as $line ) {
|
||
if ( trim( $line ) ) {
|
||
$line = addslashes( $line );
|
||
$output .= "console.log( '{$line}' );";
|
||
}
|
||
}
|
||
$output = "<script>console.warn( 'Debug Objects with Object.' ); $output</script>";
|
||
} else {
|
||
$output .= "<script>console.log( 'Debug Objects: {$data}' );</script>";
|
||
}
|
||
|
||
echo $output;
|
||
}
|
||
|
||
|
||
/* Fonction month(): convertit le mois (nb) en mois (texte) francais
|
||
|
||
photo-du-mois.php
|
||
*/
|
||
|
||
function convert_bytes($val , $type_val , $type_wanted){
|
||
$tab_val = array("o", "ko", "Mo", "Go", "To", "Po", "Eo");
|
||
if (!(in_array($type_val, $tab_val) && in_array($type_wanted, $tab_val)))
|
||
return 0;
|
||
$tab = array_flip($tab_val);
|
||
$diff = $tab[$type_val] - $tab[$type_wanted];
|
||
if ($diff > 0)
|
||
return ($val * pow(1024, $diff));
|
||
if ($diff < 0)
|
||
return ($val / pow(1024, -$diff));
|
||
return ($val);
|
||
}
|
||
|
||
function taille_fichier($octets) {
|
||
$resultat = $octets;
|
||
for ($i=0; $i < 8 && $resultat >= 1024; $i++) {
|
||
$resultat = $resultat / 1024;
|
||
}
|
||
if ($i > 0) {
|
||
return preg_replace('/,00$/', '', number_format($resultat, 2, ',', ''))
|
||
. ' ' . substr('KMGTPEZY',$i-1,1) . 'o';
|
||
} else {
|
||
return $resultat . ' o';
|
||
}
|
||
}
|
||
|
||
function formatBytes($bytes, $precision = 2) {
|
||
$units = array('o', 'Ko', 'Mo', 'Go', 'To');
|
||
|
||
$bytes = max($bytes, 0);
|
||
$pow = floor(($bytes ? log($bytes) : 0) / log(1024));
|
||
$pow = min($pow, count($units) - 1);
|
||
|
||
// Uncomment one of the following alternatives
|
||
// $bytes /= pow(1024, $pow);
|
||
$bytes /= (1 << (10 * $pow));
|
||
|
||
return round($bytes, $precision) . " " .$units[$pow];
|
||
}
|
||
|
||
function month($w) {
|
||
$m = date('m', strtotime($w)); // month
|
||
$y = date('Y', strtotime($w)); // year
|
||
|
||
$locale = getenv('LC_ALL=');
|
||
$dateFormatter = new IntlDateFormatter(
|
||
$locale,
|
||
IntlDateFormatter::LONG, // date type
|
||
IntlDateFormatter::NONE // time type
|
||
);
|
||
$dateFormatter->setPattern('LLLL'); // full month name with NO DECLENSION ;-)
|
||
$months_locale = [];
|
||
for ($month_number = 1; $month_number <= 12; ++$month_number) {
|
||
$months_locale[] = $dateFormatter->format(
|
||
// 'n' => month number with no leading zeros
|
||
DateTime::createFromFormat('n', (string)$month_number)
|
||
);
|
||
}
|
||
|
||
array_unshift($months_locale,"");
|
||
unset($months_locale[0]);
|
||
$my = ucfirst($months_locale[(int)$m]) . " " . $y;
|
||
return $my;
|
||
}
|
||
|
||
|
||
/* Fonctions get_gps() et gps2Num(): extrait les coord GPS depuis les exifs
|
||
|
||
insert_bdd.php
|
||
*/
|
||
|
||
function gps2Num($coordPart){
|
||
/*
|
||
Array
|
||
(
|
||
[0] => 46/1
|
||
[1] => 408587/10000
|
||
[2] => 0/0
|
||
)
|
||
Array
|
||
(
|
||
[0] => 5/1
|
||
[1] => 562596/10000
|
||
[2] => 0/0
|
||
)
|
||
*/
|
||
|
||
$parts = explode('/', $coordPart);
|
||
//echo $parts[0].'-'.$parts[1].'<br>';
|
||
if(count($parts) <= 0)
|
||
return 0;
|
||
if(count($parts) == 1)
|
||
return $parts[0];
|
||
if($parts[1] != 0)
|
||
return floatval($parts[0]) / floatval($parts[1]);
|
||
else return 0;
|
||
}
|
||
|
||
function get_gps($exif) {
|
||
|
||
if($exif && isset($exif['GPS'])){
|
||
/*
|
||
echo $exif['FILE']['FileName'];
|
||
_pr($exif['GPS']['GPSLatitude']);
|
||
_pr($exif['GPS']['GPSLongitude']);
|
||
*/
|
||
$GPSLatitudeRef = isset($exif['GPS']['GPSLatitudeRef']) ? $exif['GPS']['GPSLatitudeRef'] : '';
|
||
$GPSLatitude = isset($exif['GPS']['GPSLatitude']) ? $exif['GPS']['GPSLatitude'] : '';
|
||
$GPSLongitudeRef = isset($exif['GPS']['GPSLongitudeRef']) ? $exif['GPS']['GPSLongitudeRef'] : '';
|
||
$GPSLongitude = isset($exif['GPS']['GPSLongitude']) ? $exif['GPS']['GPSLongitude'] : '';
|
||
$GPSAltitude = isset($exif['GPS']['GPSAltitude']) ? $exif['GPS']['GPSAltitude'] : '';
|
||
|
||
/*
|
||
echo $GPSLatitude;
|
||
echo $GPSLongitude;
|
||
echo $GPSAltitude;
|
||
*/
|
||
|
||
$lat_degrees = count($GPSLatitude) > 0 ? gps2Num($GPSLatitude[0]) : 0;
|
||
$lat_minutes = count($GPSLatitude) > 1 ? gps2Num($GPSLatitude[1]) : 0;
|
||
$lat_seconds = count($GPSLatitude) > 2 ? gps2Num($GPSLatitude[2]) : 0;
|
||
|
||
$lon_degrees = count($GPSLongitude) > 0 ? gps2Num($GPSLongitude[0]) : 0;
|
||
$lon_minutes = count($GPSLongitude) > 1 ? gps2Num($GPSLongitude[1]) : 0;
|
||
$lon_seconds = count($GPSLongitude) > 2 ? gps2Num($GPSLongitude[2]) : 0;
|
||
|
||
$lat_direction = ($GPSLatitudeRef == 'W' or $GPSLatitudeRef == 'S') ? -1 : 1;
|
||
$lon_direction = ($GPSLongitudeRef == 'W' or $GPSLongitudeRef == 'S') ? -1 : 1;
|
||
|
||
$latitude = $lat_direction * ($lat_degrees + ($lat_minutes / 60) + ($lat_seconds / (60*60)));
|
||
$longitude = $lon_direction * ($lon_degrees + ($lon_minutes / 60) + ($lon_seconds / (60*60)));
|
||
|
||
$alt = explode('/', $GPSAltitude);
|
||
$altitude = (isset($alt[1])) ? ($alt[0] / $alt[1]) : $alt[0];
|
||
}
|
||
else {
|
||
$latitude = '';
|
||
$longitude = '';
|
||
$altitude = '';
|
||
}
|
||
|
||
//echo $latitude . " - " . $longitude . " - " . $altitude;
|
||
|
||
return array('latitude'=>$latitude, 'longitude'=>$longitude, 'altitude'=>$altitude);
|
||
}
|
||
|
||
|
||
/* Fonction create_thumb(): Création des vignettes
|
||
|
||
insert_bdd.php
|
||
*/
|
||
|
||
|
||
function create_thumb($thumb_w, $thumb_h, $image) {
|
||
global $chemin;
|
||
|
||
list($origin_w, $origin_h) = getimagesize($image);
|
||
$origin_ratio = round($origin_w / $origin_h, 1);
|
||
$outFile = str_replace("img", "thumb", $chemin) . basename($image);
|
||
|
||
$new_w = 300;
|
||
$new_h = 200;
|
||
|
||
//$f = $chemin . $image;
|
||
$thumb = new Imagick($image);
|
||
|
||
if ($origin_w != null && $origin_h != null) {
|
||
if ($origin_w > $origin_h) {
|
||
|
||
$resize_w = $origin_w * $new_h / $origin_h;
|
||
$resize_h = $new_h;
|
||
|
||
//$thumb->resizeImage($resize_w, $resize_h, Imagick::FILTER_LANCZOS, 0.9);
|
||
$thumb->resizeImage($resize_w, $resize_h, Imagick::FILTER_CATROM, 0.9);
|
||
}
|
||
else {
|
||
|
||
$resize_w = $new_w;
|
||
$resize_h = $origin_h * $new_w / $origin_w; // 450
|
||
|
||
$thumb->resizeImage($resize_w, $resize_h, Imagick::FILTER_CATROM, 0.9); // 300 x 300
|
||
$thumb->cropImage($new_w, $new_h, ($resize_w - $new_w) / 2, ($resize_h - $new_h) / 2); // (w, h, x ,y) (xy coin haut gauche) (300, 200, 0, 125)
|
||
|
||
}
|
||
|
||
//$image->sharpenimage($radius, $sigma, $channel); // 5, 1
|
||
$thumb->sharpenimage(5, 1);
|
||
$thumb->setImageCompression(Imagick::COMPRESSION_ZIP);
|
||
// Set compression level (1 lowest quality, 100 highest quality)
|
||
$thumb->setImageCompressionQuality(75);
|
||
// Strip out unneeded meta data
|
||
$thumb->stripImage();
|
||
|
||
$thumb->writeImage($outFile);
|
||
$thumb->destroy();
|
||
|
||
/*
|
||
if ($thumb_w / $thumb_h > $origin_ratio) {
|
||
$thumb_w = $thumb_h * $origin_ratio;
|
||
} else {
|
||
$thumb_h = $thumb_w / $origin_ratio;
|
||
}
|
||
|
||
if ($origin_w >= 400 && $origin_h >= 400) {
|
||
$image = new Imagick($image); // !!!
|
||
$image->thumbnailImage($thumb_w, $thumb_h);
|
||
$image->writeImage($outFile);
|
||
$image->destroy();
|
||
}
|
||
*/
|
||
}
|
||
}
|
||
|
||
|
||
|
||
/* Fonction in_bdd(): test si la photo est déjà dans la bdd
|
||
|
||
insert_bdd.php
|
||
*/
|
||
|
||
function in_bdd($image) {
|
||
try {
|
||
$conn3 = new PDO('sqlite:../db_photo.sqlite3');
|
||
#$query3 = "SELECT filename FROM photos WHERE instr(filename, '". $file . "') > 0;";
|
||
$query3 = "SELECT filename FROM photos WHERE filename = :filename";
|
||
$stmt = $conn3->prepare($query3);
|
||
$stmt->bindParam(':filename', $image, PDO::PARAM_STR);
|
||
|
||
$stmt->execute();
|
||
$result3 = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||
if (count($result3) > 0) {
|
||
return true;
|
||
} else {
|
||
return false;
|
||
}
|
||
$conn3 = null;
|
||
}
|
||
catch(PDOException $e) {
|
||
echo $e->getMessage();
|
||
}
|
||
}
|
||
|
||
|
||
/* return geo exif in a nice form
|
||
|
||
*/
|
||
|
||
function geo_frac2dec($str) {
|
||
@list( $n, $d ) = explode( '/', $str );
|
||
if ( !empty($d) )
|
||
return $n / $d;
|
||
return $str;
|
||
}
|
||
|
||
|
||
/*
|
||
33° 52.37′ 0″ S 151° 9.06′ 0″ E
|
||
*/
|
||
|
||
|
||
function geo_pretty_fracs2dec($fracs) {
|
||
return geo_frac2dec($fracs[0]) . '° ' .
|
||
geo_frac2dec($fracs[1]) . '′ ' .
|
||
geo_frac2dec($fracs[2]) . '″ ';
|
||
}
|
||
|
||
|
||
/*
|
||
to GoogleMaps
|
||
*/
|
||
|
||
function geo_single_fracs2dec($fracs) {
|
||
return geo_frac2dec($fracs[0]) +
|
||
geo_frac2dec($fracs[1]) / 60 +
|
||
geo_frac2dec($fracs[2]) / 3600;
|
||
}
|
||
|
||
/**/
|
||
function host() {
|
||
$pv_sslport=443;
|
||
//$pv_serverport=80;
|
||
//$pv_servername="sur-le-sentier.fr";
|
||
|
||
$pv_URIprotocol = isset($_SERVER["HTTPS"]) ? (($_SERVER["HTTPS"]==="on" || $_SERVER["HTTPS"]===1 || $_SERVER["SERVER_PORT"]===$pv_sslport) ? "https://" : "http://") : (($_SERVER["SERVER_PORT"]===$pv_sslport) ? "https://" : "http://");
|
||
if ($_SERVER['HTTP_HOST'] == "sur-le-sentier.fr") {
|
||
$host = $pv_URIprotocol . $_SERVER['HTTP_HOST'] . "/";
|
||
}
|
||
elseif ($_SERVER['HTTP_HOST'] == "sur-le-sentier.airbook.local") {
|
||
//$host = $pv_URIprotocol . $_SERVER['HTTP_HOST'] . "/sls/";
|
||
$host = $pv_URIprotocol . $_SERVER['HTTP_HOST'] . "/";
|
||
}
|
||
return $host;
|
||
}
|
||
|
||
|
||
class AdvancedFilesystemIterator extends ArrayIterator
|
||
{
|
||
public function __construct(string $path, int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::SKIP_DOTS)
|
||
{
|
||
parent::__construct(iterator_to_array(new FilesystemIterator($path, $flags)));
|
||
}
|
||
|
||
public function __call(string $name, array $arguments)
|
||
{
|
||
if (preg_match('/^sortBy(.*)/', $name, $m)) return $this->sort('get' . $m[1]);
|
||
throw new MemberAccessException('Method ' . $methodName . ' not exists');
|
||
}
|
||
|
||
public function sort($method)
|
||
{
|
||
if (!method_exists('SplFileInfo', $method)) throw new InvalidArgumentException(sprintf('Method "%s" does not exist in SplFileInfo', $method));
|
||
|
||
$this->uasort(function(SplFileInfo $a, SplFileInfo $b) use ($method) { return (is_string($a->$method()) ? strnatcmp($a->$method(), $b->$method()) : $b->$method() - $a->$method()); });
|
||
|
||
return $this;
|
||
}
|
||
|
||
public function limit(int $offset = 0, int $limit = -1)
|
||
{
|
||
return parent::__construct(iterator_to_array(new LimitIterator($this, $offset, $limit))) ?? $this;
|
||
}
|
||
|
||
public function match(string $regex, int $mode = RegexIterator::MATCH, int $flags = 0, int $preg_flags = 0)
|
||
{
|
||
return parent::__construct(iterator_to_array(new RegexIterator($this, $regex, $mode, $flags, $preg_flags))) ?? $this;
|
||
}
|
||
}
|
||
|
||
/*
|
||
Suppress keywords like _vert_, _violet_...
|
||
*/
|
||
function clean_keywords($keywords) {
|
||
$v = preg_replace( "/_\w+_/", "", $keywords );
|
||
$v = str_replace(",,", ",", $v);
|
||
//$v= (substr($v, strlen($v)-1) == ",") ? substr($v, 0, -1) : $v;
|
||
$v= rtrim($v, ",");
|
||
$v= ltrim($v, ",");
|
||
return $v;
|
||
}
|
||
|
||
function conv_date($dateoriginal, $format) {
|
||
$locale = getenv('LC_ALL=');
|
||
|
||
if ($format == 1) {
|
||
$formatter = new IntlDateFormatter($locale, IntlDateFormatter::FULL, IntlDateFormatter::SHORT, "Europe/Paris");
|
||
// vendredi 16 septembre 2022 à 19:17
|
||
}
|
||
elseif ($format == 2) {
|
||
$formatter = new IntlDateFormatter($locale, IntlDateFormatter::LONG, IntlDateFormatter::LONG, "Europe/Paris");
|
||
// 16 septembre 2022 à 19:17:22 UTC+2
|
||
}
|
||
elseif ($format == 3) {
|
||
$formatter = new IntlDateFormatter($locale, IntlDateFormatter::MEDIUM, IntlDateFormatter::MEDIUM, "Europe/Paris");
|
||
// 16 sept. 2022, 19:17:22
|
||
}
|
||
elseif ($format == 4) {
|
||
$formatter = new IntlDateFormatter($locale, IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT, "Europe/Paris");
|
||
// 16 sept. 2022, 19:17
|
||
}
|
||
|
||
$date = new DateTime($dateoriginal);
|
||
return $formatter->format($date);
|
||
}
|
||
|
||
function data_for_lightbox($data) {
|
||
|
||
global $chemin;
|
||
//$query4 = "INSERT OR IGNORE INTO photos (filename, filesize, dateoriginal, lens, speed, correctexpo, iso, usercomment, comment, model, metering, flash, focal, program, wb, mode, width, height, html, aperture, software, lat, long, alt, keywords, title, creator, city, department, code, country, copyright, legende);
|
||
|
||
$filename = $data['filename'];
|
||
$title_thumb = pathinfo($filename, PATHINFO_FILENAME);
|
||
|
||
$aperture = $data['aperture'];
|
||
$model = $data['model'];
|
||
$objectif = $data['lens'];
|
||
$speed = $data['speed'];
|
||
$iso = $data['iso'];
|
||
$exif = $model . " \u{30FB} " . $objectif . " \u{30FB} " . $speed . " \u{30FB} " . $aperture . " \u{30FB} " . $iso . "ISO";
|
||
|
||
$correctexpo = $data['correctexpo'];
|
||
$metering = $data['metering'];
|
||
$program = $data['program'];
|
||
$wb = $data['wb'];
|
||
$software = $data['software'];
|
||
$dateoriginal = conv_date($data['dateoriginal'], 4);
|
||
|
||
$focal = $data['focal'];
|
||
$flash = $data['flash'];
|
||
|
||
$latitude = $data['lat'];
|
||
$longitude = $data['long'];
|
||
$altitude = $data['alt'];
|
||
|
||
$width = $data['width'];
|
||
$height = $data['height'];
|
||
|
||
//echo $width . "-" . $height;
|
||
|
||
$gps = (!empty($longitude) && !empty($latitude)) ? $latitude . "," . $longitude : "";
|
||
//$gps = $longitude . "," . $latitude;
|
||
|
||
$title = $data['title'];
|
||
|
||
$legende = $data['legende'];
|
||
$file = basename($filename);
|
||
if (!empty($title)) {
|
||
$x = $title;
|
||
$y = ($legende != "") ? $legende : "";
|
||
}
|
||
elseif (!empty($legende)) {
|
||
$x= $legende;
|
||
$y = "";
|
||
}
|
||
else {
|
||
$x = $file;
|
||
$y = "";
|
||
}
|
||
|
||
if (!empty($gps)) {
|
||
$map = '<a href = "https://maps.google.com/maps?q=' . $gps . '&t=&z=9&ie=UTF8&iwloc=&output=embed" title="' . $title . '" data-lcl-txt="' . $legende . '">' . " \u{30FB} \u{2693} " . '</a>';
|
||
}
|
||
else {
|
||
$map = '';
|
||
}
|
||
|
||
$creator = $data['creator'];
|
||
|
||
$big = host() . $chemin . $data['filename'];
|
||
$thumb = host() . str_replace("img", "thumb", $chemin) . $data['filename'];
|
||
|
||
// origine
|
||
//$big = host() . $data['filename'];
|
||
//$thumb = host() . str_replace("../photos/img", "../photos/thumb", $data['filename']);
|
||
|
||
$keywords = str_replace(',', " \u{30FB} ", clean_keywords($data['keywords']));
|
||
$copyright = $data['copyright'];
|
||
|
||
$city = $data['city'];
|
||
$department = $data['department'];
|
||
$code = $data['code'];
|
||
$country = $data['country'];
|
||
|
||
$comment = $data['comment'];
|
||
$usercomment = $data['usercomment'];
|
||
|
||
$description = "<table>";
|
||
$description .= "<tr><td>" . gettext("Date") . "</td><td>" . $dateoriginal . "</td></tr>";
|
||
$description .= "<tr><td>" . gettext("Speed") . "</td><td>" . $speed . "</td></tr>";
|
||
$description .= "<tr><td>" . gettext("Aperture") . "</td><td>" . $aperture . "</td></tr>";
|
||
$description .= "<tr><td>" . gettext("Iso") . "</td><td>" . $iso . "</td></tr>";
|
||
$description .= "<tr><td>" . gettext("Model") . "</td><td>". $model . "</td></tr>";
|
||
$description .= "<tr><td>" . gettext("Lens") . "</td><td>" . $objectif . "</td></tr>";
|
||
$description .= "<tr><td>" . gettext("Focal") . "</td><td>" . $focal . "</td></tr>";
|
||
$description .= "<tr><td>" . gettext("Exposure Correction") . "</td><td>" . $correctexpo . "</td></tr>";
|
||
$description .= "<tr><td>" . gettext("Metering") . "</td><td>". $metering . "</td></tr>";
|
||
$description .= "<tr><td>" . gettext("Program") . "</td><td>" . $program . "</td></tr>";
|
||
$description .= "<tr><td>" . gettext("White balance") . "</td><td>" . $wb . "</td></tr>";
|
||
|
||
if (! strcasecmp($flash, "Off") == 0) {
|
||
$description .= "<tr><td>" . gettext("Flash") . "</td><td>" . $flash . "</td></tr>";
|
||
}
|
||
$description .= "<tr><td>" . gettext("Software") . "</td><td>" . $software . "</td></tr>";
|
||
$description .= "<tr><td>" . gettext("Keywords") . "</td><td>" . $keywords . "</td></tr>";
|
||
(!empty($copyright)) && $description .= "<tr><td>" . gettext("Copyright") . "</td><td>" . $copyright . "</td></tr>";
|
||
|
||
(!empty($city)) && $description .= "<tr><td>" . gettext("City") . "</td><td>" . $city . "</td></tr>";
|
||
(!empty($department)) && $description .= "<tr><td>" . gettext("Department") . "</td><td>" . $department . "</td></tr>";
|
||
$code = (!empty($code)) ? " (" . $code . ")" : "";
|
||
(!empty($country)) && $description .= "<tr><td>" . gettext("Country") . "</td><td>" . $country . $code . "</td></tr>";
|
||
(!empty($map)) && $description .= "<tr><td>GPS</td><td>" . $map . "</td></tr>";
|
||
((!empty($comment)) || (!empty($usercomment))) && $description .= "<tr><td> </td><td> </td></tr>";
|
||
(!empty($comment)) && $description .= "<tr><td>" . gettext("Comment") . "</td><td>" . $comment . "</td></tr>";
|
||
(!empty($usercomment)) && $description .= "<tr><td>" . gettext("User comment") . "</td><td>" . $usercomment . "</td></tr>";
|
||
$description .= "</table>";
|
||
|
||
$lightbox = array();
|
||
$lightbox['title_thumb'] = $title_thumb;
|
||
$lightbox['exif'] = $exif;
|
||
$lightbox['title'] = $x;
|
||
$lightbox['legende'] = $y;
|
||
$lightbox['thumb'] = $thumb;
|
||
$lightbox['big'] = $big;
|
||
$lightbox['keywords'] = $keywords;
|
||
$lightbox['creator'] = $creator;
|
||
$lightbox['gps'] = $gps;
|
||
$lightbox['description'] = $description;
|
||
$lightbox['width'] = $width;
|
||
$lightbox['height'] = $height;
|
||
|
||
/*
|
||
Array
|
||
(
|
||
[title_thumb] => 12_2021
|
||
[exif] => Canon EOS 90D ・ EF500mm f/4L IS USM III ・ 1/3200 ・ f/5.6 ・ 1600ISO
|
||
[title] => 12_2021.jpg
|
||
[legende] =>
|
||
[thumb] => https://airbook.local/sls/photos/thumb/12_2021.jpg
|
||
[big] => https://airbook.local/sls/photos/img/12_2021.jpg
|
||
[keywords] => Carduelis carduelis ・ chardonneret élégant
|
||
[creator] => @Bruno Pesenti
|
||
[description] => <table>...</table>
|
||
)
|
||
*/
|
||
return $lightbox;
|
||
}
|
||
|
||
?>
|