match('/heic|HEIC|jpg|jpeg|JPG|JPEG|webp|WEBP|avif|AVIF$/'); echo '

' . count($dir) . gettext(' images found in folder') . ' photos/img/ ...

'; echo '

' . gettext("Creation of the database") . ' ' . $base . ' ' . gettext("and the table") . ' photo (' . gettext("if necessary") . ')...

'; // Création de la base et de la table photos $conn = new PDO("sqlite:db_photo.sqlite3"); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $query = "CREATE TABLE IF NOT EXISTS photos ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, filename TEXT NOT NULL, dateoriginal TEXT, lens TEXT, speed TEXT, iso INTEGER, width INTEGER, height INTEGER, html TEXT, aperture TEXT, model TEXT, lat REAL, long REAL, alt REAL, legende TEXT, copyright TEXT, title TEXT, creator TEXTr, keywords TEXT, metering TEXT, flash TEXT, focal TEXT, wb TEXT, program TEXT, UNIQUE(filename) )"; $conn->exec($query); echo '

' . gettext('Read image files in the folder') . ' photos/img/...

'; $i = 1; $photos = array(); foreach($dir as $file){ /* $file->getFilename() pathName() */ $file = $file->getpathName(); $x = in_bdd($file); if ($x == false) { //false if ($exif = @exif_read_data($file, 0, true )) { $mod = isset($exif['IFD0']['Model']) ? $exif['IFD0']['Model'] : ''; # YYYY-MM-DD HH:MM:SS.SSS - 2019:10:01 14:03:12 $da = isset($exif['EXIF']['DateTimeOriginal']) ? $exif['EXIF']['DateTimeOriginal'] : ''; if (isset($exif['EXIF']['DateTimeOriginal'])) { $d = explode(' ', $exif['EXIF']['DateTimeOriginal']); $da = str_replace(':', '-', $d[0]) . " " . $d[1] . ".000"; } else { $d = ''; } if (isset($exif['EXIF']['UndefinedTag:0xA434'])) { $w = $exif['EXIF']['UndefinedTag:0xA434']; $arr = array("100.0 mm" => "EF100mm f/2.8 Macro USM", "100.0-400.0 mm" => "EF100-400mm f/4.5-5.6L IS USM", "140.0-560.0 mm" => "EF100-400mm f/4.5-5.6L IS USM +1.4x II", "17.0-40.0 mm" => "EF17-40mm f/4L USM", "24-70mm" => "SIGMA 24-70mm F2.8 EX DG", "70.0-200.0 mm" => "EF70-200mm f/4L USM", "10.0-22.0 mm" => "EF-S10-22mm f/3.5-4.5 USM", "500.0 mm" => "Sigma 500mm f/4.5 EX HSM ", "500mm" => "Sigma 500mm f/4.5 EX HSM "); if (array_key_exists($w, $arr)) $obj= $arr[$w]; else $obj = $w; } else { $obj = ''; } if (isset($exif['EXIF']['ExposureTime'])) { $q = explode('/', $exif['EXIF']['ExposureTime']); $sp = ($q[0] > 1) ? ($q[0] / $q[1]) . "s" : $exif['EXIF']['ExposureTime']; } else { $sp = ''; } $iso = isset($exif['EXIF']['ISOSpeedRatings']) ? $exif['EXIF']['ISOSpeedRatings'] : ''; if (isset($exif['EXIF']['MeteringMode'])) { $mm = $exif['EXIF']['MeteringMode']; switch ($mm) { case 1: $mm = gettext("Average"); break; case 2: $mm = gettext("Center-weighted average"); // Moy. à pred. centrale break; case 3: $mm = gettext("Spot"); break; case 4: $mm = gettext("Multi-Spot"); break; case 5: $mm = gettext("Pattern"); // Mesure évaluative break; case 6: $mm = gettext("Partial"); // Mesure sélective break; default: $mm = gettext("Unknown") . ': ' . $mm; // Evaluative Mesure évaluative // Centre-weighted Average Moy. à pred. centrale // Partial Mesure sélective // Spot Spot // Pattern =Mesure évaluative (30D) // Average Mesure évaluative } } else { $mm = ''; } if (isset($exif['EXIF']['Flash'])) { $fla = $exif['EXIF']['Flash']; switch ($fla) { case 0: $fla = gettext("Off"); break; case 1: $fla = gettext("Auto"); break; case 2: $fla = gettext("On"); break; case 3: $fla = gettext("Red Eye Reduction"); break; case 4: $fla = gettext("Slow Synchro"); break; case 5: $fla = gettext("Auto + Red Eye Reduction"); break; case 6: $fla = gettext("On + Red Eye Reduction"); break; case 16: $fla = gettext("External Flash"); break; default: $fla = gettext("Unknown"); } } else { $fla = ''; } if (isset($exif['EXIF']['FocalLength'])) { $k = explode('/', $exif['EXIF']['FocalLength']); $fl = $k[0] . " mm"; } else { $fl = ''; } /* if (isset($exif['EXIF']['ExposureMode'])) { $em = $exif['EXIF']['ExposureMode']; echo $em; $em = hexdec(intel2Moto($exif['EXIF']['ExposureMode'])); echo $em; switch ($em) { case 0: $em = gettext("EasyShoot"); break; case 1: $em = gettext("Program"); break; case 2: $em = gettext("Tv"); break; case 3: $em = gettext("Av"); break; case 4: $em = gettext("Manual"); break; case 5: $em = gettext("Auto-DEP"); break; default: $em = gettext("Unknown"); } } else { $em = ''; } */ if (isset($exif['EXIF']['WhiteBalance'])) { $wb = $exif['EXIF']['WhiteBalance']; switch ($wb) { case 0: $wb = gettext("Auto"); break; case 1: $wb = gettext("Daylight"); break; case 2: $wb = gettext("Cloudy"); break; case 3: $wb = gettext("Tungsten"); break; case 4: $wb = gettext("Fluorescent"); break; case 5: $wb = gettext("Flash"); break; case 6: $wb = gettext("Custom"); break; case 7: $wb = gettext("Black & White"); break; case 8: $wb = gettext("Shade"); break; case 9: $wb = gettext("Manual Temperature (Kelvin)"); break; default: $wb = gettext("Unknown"); } } else { $wb = ''; } if (isset($exif['EXIF']['ExposureProgram'])) { $ep = $exif['EXIF']['ExposureProgram']; switch ($ep) { case 1: $ep = gettext('Manual'); break; case 2: $ep = gettext('Program'); break; case 3: $ep = gettext('Aperture Priority'); break; case 4: $ep = gettext('Shutter Priority'); break; case 5: $ep = gettext('Program Creative'); break; case 6: $ep = gettext('Program Action'); break; case 7: $ep = gettext('Portrait'); break; case 8: $ep = gettext('Landscape'); break; default: $ep = gettext('Unknown') . ': ' . $data; break; } } else { $ep = ''; } $wi = isset($exif['COMPUTED']['Width']) ? $exif['COMPUTED']['Width'] : ''; $he = isset($exif['COMPUTED']['Height']) ? $exif['COMPUTED']['Height'] : ''; $ht = isset($exif['COMPUTED']['html']) ? $exif['COMPUTED']['html'] : ''; $ap = isset($exif['COMPUTED']['ApertureFNumber']) ? $exif['COMPUTED']['ApertureFNumber'] : ''; $gps = get_gps($exif); if ($gps['latitude'] != "") { echo "lat: " . $gps['latitude'] . "
"; echo "long: " . $gps['longitude'] . "
"; echo "alt: " . $gps['altitude'] . "
"; } $photos[$i] = array( 'filename' => $file, 'dateoriginal' => $da, 'lens' => $obj, 'speed' => $sp, 'iso' => $iso, 'width' => $wi, 'height' => $he, 'html' => $ht, 'aperture' => $ap, 'model' => $mod, 'lat' => $gps['latitude'], 'long' => $gps['longitude'], 'alt' => $gps['altitude'], 'metering' => $mm, 'flash' => $fla, 'focal' => $fl, 'wb' => $wb, 'program' => $ep ); } if ($iptc = @getimagesize($file, $info)) { //_pr($iptc); if (isset($info["APP13"])) { $mots = ""; $iptc = iptcparse ($info["APP13"]); $legende = (isset($iptc["2#120"][0])) ? $iptc["2#120"][0] : ''; $copyright = (isset($iptc["2#116"][0])) ? $iptc["2#116"][0] : ''; $title = (isset($iptc["2#105"][0])) ? $iptc["2#105"][0] : ''; $creator = (isset($iptc["2#080"][0])) ? $iptc["2#080"][0] : ''; $mots_cles = (isset($iptc["2#025"])) ? $iptc["2#025"] : ''; // array if (!empty($mots_cles)) { foreach ($mots_cles as $key => $val) { $mots .= strtolower($val) . ","; } $mots = substr($mots, 0, -1); } $photos[$i]['legende'] = $legende; $photos[$i]['copyright'] = $copyright; $photos[$i]['title'] = $title; $photos[$i]['creator'] = $creator; $photos[$i]['mots_cles'] = $mots; } else { $photos[$i]['legende'] = ''; $photos[$i]['copyright'] = ''; $photos[$i]['title'] = ''; $photos[$i]['creator'] = ''; $photos[$i]['mots_cles'] = ''; } } } $i++; } $z = count($photos); if ($z == 0) { echo '

' . gettext('No new image files to add') . '...

'; echo ''; die(); } $query5 = "SELECT MAX(id) FROM photos"; $stmt = $conn->prepare($query5); $stmt->execute(); $resultat = $stmt->fetch(PDO::FETCH_ASSOC); $avant = $resultat['MAX(id)']; $nb_avant = (isset($avant)) ? $avant : 0; echo '

' . gettext('Creation of thumbnails') . ' ('. $th_w . 'px x ' . $th_h . 'px) ' . gettext('in the folder') . ' photos/thumb/.

'; $b = ($z > 1) ? gettext('new images') : gettext('new image'); echo '

' . gettext('Insertion of ') . $z . ' ' . $b . gettext(' in database') . '...

'; // Insertion des photos dans la base // Création des vignettes try { $query2 = "INSERT OR IGNORE INTO photos (filename, dateoriginal, lens, speed, iso, width, height, html, aperture, model, lat, long, alt, legende, copyright, title, creator, keywords, metering, flash, focal, wb, program) VALUES (:filename, :dateoriginal, :lens, :speed, :iso, :width, :height, :html, :aperture, :model, :lat, :long, :alt, :legende, :copyright, :title, :creator, :keywords, :metering, :flash, :focal, :wb, :program)"; $stmt = $conn->prepare($query2); $stmt->bindParam(':filename', $file); $stmt->bindParam(':dateoriginal', $da); $stmt->bindParam(':lens', $obj); $stmt->bindParam(':speed', $sp); $stmt->bindParam(':iso', $iso); $stmt->bindParam(':width', $wi); $stmt->bindParam(':height', $he); $stmt->bindParam(':html', $ht); $stmt->bindParam(':aperture', $ap); $stmt->bindParam(':model', $mod); $stmt->bindParam(':lat', $gps['latitude']); $stmt->bindParam(':long', $gps['longitude']); $stmt->bindParam(':alt', $gps['altitude']); $stmt->bindParam(':legende', $leg); $stmt->bindParam(':copyright', $cop); $stmt->bindParam(':title', $tit); $stmt->bindParam(':creator', $crea); $stmt->bindParam(':keywords', $mot); $stmt->bindParam(':metering', $mm); $stmt->bindParam(':flash', $fla); $stmt->bindParam(':focal', $fl); $stmt->bindParam(':wb', $wb); $stmt->bindParam(':program', $ep); if (isset($photos)) { foreach ($photos as $item) { $file = $item['filename']; $da = $item['dateoriginal']; $obj = $item['lens']; $sp = $item['speed']; $iso = $item['iso']; $wi = $item['width']; $he = $item['height']; $ht = $item['html']; $ap = $item['aperture']; $mod = $item['model']; $gps['latitude'] = $item['lat']; $gps['longitude'] = $item['long']; $gps['altitude'] = $item['alt']; $leg = $item['legende']; $cop = $item['copyright']; $tit = $item['title']; $crea = $item['creator']; $mot = $item['mots_cles']; $mm = $item['metering']; $fla = $item['flash']; $fl = $item['focal']; $wb = $item['wb']; $ep = $item['program']; create_thumb($th_w, $th_h, $file); $stmt->execute(); } } } catch(PDOException $e) { echo $e->getMessage(); } /* Affichage depuis la bdd des dernières images ajoutées */ /* try { $query4 = "SELECT filename, dateoriginal, lens, speed, iso, width, height, html, aperture, model, lat, long, alt, legende, copyright, title, creator, keywords, metering, flash, focal, wb, program FROM photos WHERE id > ? ORDER BY dateoriginal DESC"; //$query4 = "SELECT filename, date, lens, speed, iso, width, height, html, aperture, model, lat, long, alt, legende, copyright, title, creator, keywords FROM photos WHERE lat != '' OR long != '' ORDER BY date DESC"; $stmt = $conn->prepare($query4); $stmt->bindValue(1, $nb_avant, SQLITE3_INTEGER); // (1,3...) 1=1ere valeur 3=valeur # id 1 -> 3 //$stmt->execute(array(1, 3)); // WHERE id >= ? AND id <= ? ORDER BY date DESC"; $stmt->execute(); //$row = $stmt->fetchAll(PDO::FETCH_ASSOC); //_pr($result); echo '

' . gettext('Reading added photos') . ':

'; echo '
'; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $thumbnail = host() . str_replace("photos/img", "photos/thumb", $row['filename']); $full = host() . $row['filename']; echo ''; } echo '
' . gettext('Thumb') . '' . gettext('Filename') . '' . gettext('Date') . '' . gettext('Lens') . '' . gettext('Speed') . '' . gettext('Iso') . '' . gettext('Width') . '' . gettext('Height') . '' . gettext('Html') . '' . gettext('Aperture') . '' . gettext('Model') . '' . gettext('Latitude') . '' . gettext('Longitude') . '' . gettext('Alttitude') . '' . gettext('Legende') . '' . gettext('Copyright') . '' . gettext('Title') . '' . gettext('Creator') . '' . gettext('Keywords') . '' . gettext('Metering') . '' . gettext('Flash') . '' . gettext('Focal') . '' . gettext('Wb') . '' . gettext('Program') . '
' . '' . '' . $row['filename'] . '' . $row['dateoriginal'] . '' . $row['lens'] . '' . $row['speed'] . '' . $row['iso'] . '' . $row['width'] . '' . $row['height'] . '' . $row['html'] . '' . $row['aperture'] . '' . $row['model'] . '' . $row['lat'] . '' . $row['long'] . '' . $row['alt'] . '' . $row['legende'] . '' . $row['copyright'] . '' . $row['title'] . '' . $row['creator'] . '' . $row['keywords'] . '' . $row['metering'] . '' . $row['flash'] . '' . $row['focal'] . '' . $row['wb'] . '' . $row['program'] . '
'; echo '
'; $conn = null; } catch(PDOException $e) { echo $e->getMessage(); } */ ?>

© 2013- sur-le-sentier.fr