Opret et dynamisk fotogalleri med PHP i tre trin
hvisdu har et digitalt kamera, har du sandsynligvis også et digitalfotogalleri med mindeværdige øjeblikke. Og hvis du har et digitalt fotogalleri, er du næsten sikker på at have stødt på et meget almindeligt problem: organiseringdine fotos, så de let kan søges og indekseres.
nu ved du måske ikke dette,men de fleste digitale kameraer indlejrer automatisk beskrivende metadata i overskrifterne på de billeder, de opretter. Disse overskrifter,kaldet udskiftelig billedfil(EKSIF) overskrifter, indeholder oplysninger om kameraets mærke og model, klokkeslæt ogdato billedet blev taget, de tekniske specifikationer for billedet (shutterspeed, blænde osv.) og en miniature af billedet. Derudover giver manyimage-redaktører dig mulighed for at supplere disse automatisk genererede overskrifter med din egen beskrivende tekst – for eksempel “Sally’ s first footballgame” eller “getting drunk in Malta”.
jeg er sikker på, at du kan se, hvor jeg går hen med dette. Med en lille smule fantasiog kreativ tænkning er det muligt at bruge de overskrifter, der genereres af dinkamera (og hvis du har tid og motivation, yderligere suppleret af dig)til automatisk at organisere og beskrive din fotosamling. Denne artikel vil vise dig hvordan, ved hjælp af PHP ‘ eksif funktioner.
Trin 1: Sørg for, at din PHP-build understøtter EKSIF
for at læse EKSIF-overskrifter skal din PHP-build indeholde support til Eksifmodulet. Du kan kontrollere, om denne support er aktiveret, ved at oprette en PHP scriptindeholder koden vist i Liste A.
Liste A
<?php
phpinfo ();
?>
se output af dette script i din netsøgemaskine, og gennemgå listen over udvidelser for at se, om der er inkluderet. Hvis det er, skal du gå til næste trin. Hvis ikke, skal du aktivere PHP ‘ s EKSIF-funktioner, enten ved at kommentere udvidelseslinjen i php.ini (vinduer) orrecompilering din PHP build med –enable-eksif argument (unik). Flere oplysninger om, hvordan du gør dette ertilgængelig på PHP hjemmeside.
Trin 2: Flyt dine fotos til en enkelt mappe
næste,indsamle alle dine fotos i en enkelt mappe under internetserveren documentroot. Dette er også et godt tidspunkt at tilføje dine egne beskrivende kommentarer til hverbillede (selvom dette ikke er vigtigt). En række gode dele og gratis værktøjer er tilgængelige for at hjælpe dig med at gøre dette; se på Eksifer for vinduer eller RoboPhoto.
Trin 3: Skriv kode for at læse fotooverskrifter og kommentarer
det sidste trin er at skrive PHP-scripts, der udtrækker EKSIF-data fra dine billeder og automatisk genererer en hjemmeside med miniaturebilleder, teknisk information og links til større versioner af hvert billede. Der er to scriptsher: den første, galleri.php, (Se liste B) søger efter billeder og uddrag EKSIF overskrifter fra dem, mens den anden, miniature.php, (Se liste C) er ansvarlig for at udtrække miniaturebilledet frahvert foto.
notering B – Her er koden til galleri.php
<html>
<head></head>
<body>
<table>
<?php
/ / Definer mappesti
$dir = “.”;
// gentag gennem filer
/ / se efter JPEG ‘ er
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
mens (($file = readdir($dh)) != = falsk) {
hvis (preg_match (“/.jpg/”, $file)) {
/ / Læs EKSIF-overskrifter
$eksif = eksif_read_data ($file, 0, true);
ekko ” <tr >”;
// få thumbnail
// link til fuld billede
echo “<td valign=top><a href=$dir/$file><imgsrc=thumbnail.php?file=$file> < / a > <td>”;
echo ” <td valign=top> < skriftstørrelse=-1>”;
// Hent filnavn
echo ” fil: < b>”. $ eks . “< / b > < br/>”;
// få tidsstempel
ekko ” tidsstempel:”. $ eks . “<br/>”;
// Hent billeddimensioner
ekko ” dimensioner:”. $ eks . “h”. $ eks . “<br/>”;
// få kamera mærke og model
echo ” kamera:”. kr DKK;
echo ” < / skrifttype> < / td>”;
echo ” < / tr>”;
}
}
closedir ($dh);
}
}
?>
</tabel>
</krop>
</html >
Thisscript bruger PHP ‘ s katalogfunktioner til at hente alist af alle JPEG-billeder i mappen og bruger derefter funktionen eksif_read_data() til at læse EKSIF-overskrifterne fra hvert billede som anarray. Hvert billede vises som en miniature ved hjælp af oplysninger fra MiNiAtUrE.php, og eachthumbnail er i sig selv hyperlink til sit overordnede billede. Relevante oplysninger-billednavn, dimensioner, tidsstempel og kameramodel—udvindes fra disse overskrifter og vises med hver miniature.
hvis du brugte en ekstern editor til at tilføje dine egne kommentarer til billederne, kan du få adgang til de relevante arrayelementer for at hente og vise disse oplysninger også. Kig ind i arrayet $eksif med print_r ($eksif) for at finde ud af arraystien til dine brugerdefinerede metadata.
Bemærk:forskellige kameraproducenter bruger overskrifterne på forskellige måder. Hvis outputtet af scriptet ovenfor ser ud til at mangle nogle oplysninger, skal du se inde i $eksif-arrayet med print_r($eksif) for at finde ud af, hvordan dit kamera skriver EKSIF-dataene, og foretag passende justeringertil array-tasterne i scriptet ovenfor (ListingB).
liste C – og her er koden til miniature.php
<?php
/ / Definer mappesti
$dir = “.”;
$image = eksif_thumbnail ($dir . “/” . $_GET);
header (“indholdstype: billede/jpeg”);
echo $image;
?>
denne beskrivelse er meget enkel—Den henter billedfilnavnet fra URL ‘ en og bruger funktionen eksif_thumbnail() til at udtrække en miniature fra det navngivne billede. Denne miniature sendes derefter til thebroser, sammen med en passende overskrift, til visning.
Placer begge disse scripts i den mappe, der indeholder dine fotos, og brug derefter din internetsøgemaskine til at få adgang til galleri.php. Du bør se miniaturebilleder afbillederne i mappen sammen med beskrivende oplysninger om hver.Hvis du klikker på et miniaturebillede, skal du gå til det større overordnede billede.
Figur A er et eksempelskærmbillede af, hvordan output kan se ud:
Figur A
et eksempel screenshot
Andthere har du det-et automatisk genereret fotogalleri! Når du kopierer nye billeder til mappen, vises de automatisk i gallerilisten.Er det ikke pænt?
Bemærk: Du kanplacere de scripts, der er oprettet i trin 3i en anden mappe end den, der indeholder dine fotos, så længe duHusk at opdatere $dirvariable øverst i hvert script med den rigtige sti til fotosamlingen.