januar 6, 2022

Lag et dynamisk fotogalleri med PHP i tre trinn

Hvis du har et digitalkamera, har du sannsynligvis også et digitalfotogalleri med minneverdige øyeblikk. Og hvis du har et digitalt fotogalleri, er du nesten sikker på å ha kjørt inn i et svært vanlig problem: organisere bildene dine slik at de lett kan søkes og indekseres.

nå vet du kanskje ikke dette, men de fleste digitale kameraer legger automatisk inn beskrivende metadata i overskriftene til bildene de lager. Disse overskriftene,Kalt Exif-overskrifter(EXchangeable Image File), inneholder informasjon om kameramerket og modellen, tiden ogdatoen bildet ble tatt, de tekniske spesifikasjonene til bildet (lukkerhastighet, blenderåpning og så videre) og et miniatyrbilde av bildet. I tillegg lar manyimage redaktører deg supplere disse automatisk genererte overskrifter med beskrivende tekst av din egen – for eksempel «Sallys første fotballspill «eller» Bli full I Malta».

jeg er sikker på at du kan se hvor jeg går med dette. Med litt fantasi og kreativ tenkning er det mulig å bruke overskriftene som genereres av kameraet ditt (og, hvis du har tid og motivasjon, ytterligere supplert av deg)for automatisk å organisere og beskrive bildesamlingen din. Denne artikkelen vilvis deg hvordan DU bruker PHP ‘ sexif-funksjoner.

Trinn 1: Pass PÅ AT PHP-bygningen støtter EXIF

Inorder FOR å lese EXIF-overskrifter må PHP-bygningen inneholde støtte for Exifmodulen. Du kan sjekke om denne støtten er aktivert, ved å opprette ET PHP-skript som inneholder koden som vises I Oppføring A.

Oppføring A

<?php
phpinfo();
?>

Viewthe utgang av dette skriptet i Nettleseren din, og gjennomgå listen ofextensions å se OM EXIF er inkludert. Hvis det er, gå til neste trinn. Hvis ikke, må du aktivere PHPS EXIF-funksjoner, hellerved un-kommenterer utvidelseslinjen i php.ini (Windows) ellerrekompilere PHP bygge med — enable-exif argument (UNIX). Mer informasjon om hvordan du gjør dette er tilgjengelig PÅ PHP Nettsted.

Trinn 2: Flytt bildene dine til en enkelt katalog

Deretter samler du alle bildene dine i en enkelt katalog under Webserveren documentroot. Dette er også en god tid å legge til dine egne beskrivende kommentarer til hverbilde (selv om dette ikke er viktig). En rekke gode shareware og freewaretools er tilgjengelige for å hjelpe deg med å gjøre dette; ta En titt På Exifer For Windows eller RoboPhoto.

Trinn 3: Skriv kode for å lese bildeoverskrifter og kommentarer

Det Endelige trinnet er å skrive PHP-skriptene som vil trekke UT EXIF-data fra dinbilder og automatisk generere en Nettside med miniatyrbilder, teknisk informasjon og lenker til større versjoner av hvert bilde. Det er to scriptshere: den første, galleri.php, (Se Liste B) ser etter bilder OG trekker UT EXIF-overskrifter fra dem, mens den andre, miniatyrbilde.php, (Se Liste C) er ansvarlig for å trekke ut miniatyrbildet frahvert bilde.

Oppføring B-Her er koden for galleri.php

<html>
<head></head>
<body>
<table>
<?php
/ / definer katalogbane
$dir =».»;
// iterere gjennom filer
// se Etter Jpeg
hvis (is_dir($dir)) {
hvis ($dh = opendir($dir)) {
mens (($file = readdir($dh)) != = usann) {
hvis (preg_match («/.jpg/», $ fil)) {
// les EXIF-overskrifter
$exif = exif_read_data($fil, 0, sann);
ekko «<tr>»;
// få miniatyrbilde
// lenke til fullt bilde
ekko «<td valign=topp><en href=$dir/$fil > < imgsrc=miniatyrbilde.php?fil=$fil > < / a> <td>»;
ekko » <td valign=topp> < skriftstørrelse=-1>»;
// få filnavn
ekko » Fil: < b >». $ exif . «< / b > < br/>»;
// få tidsstempel
ekko «Tidsstempel:». $ exif . «<br/>»;
// få bildedimensjoner
ekko «Dimensjoner:». $ exif . «x». $ exif . «<br/>»;
// få kamera merke og modell
ekko «Kamera:». $ exif;
ekko » < / skrift> < / td >»;
ekko » < / tr>»;
}
}
closedir ($dh));
}
}
?>
</tabell>
</kroppen>
</html >

Thisscript bruker PHPS katalogfunksjoner for å hente alist av ALLE JPEG-bildene i katalogen, og bruker deretter exif_read_data () – funksjonen til å lese EXIF-overskriftene fra hvert bilde som anarray. Hvert bilde vises som et miniatyrbilde ved hjelp av informasjon gitt av miniatyrbilde.php, og everythumbnail er selv hyperkoblet til sitt overordnede bilde. Relevant informasjon-imagename, dimensjoner, tidsstempel og kameramodell-er hentet fra disse overskriftene og vises med hvert miniatyrbilde.

hvis DU brukte EN EXIF-editor for å legge til dine egne kommentarer til bildene, kan du få tilgang til de riktige arrayelementene for å hente og vise denne informasjonen også. Se inne i $exif array med print_r ($exif) for å finne outthe array banen for dine egendefinerte metadata.

Merk: ULIKE kameraprodusenter bruker EXIF-hodene på forskjellige måter. Hvis output av skriptet ovenfor ser ut til å mangle noe informasjon, bør duse inne i $exif array med print_r ($exif) for å finne ut nøyaktig hvordan kameraet skriver EXIF-dataene, og foreta passende justeringer til array-tastene i skriptet ovenfor(ListingB).

Oppføring C-og her er koden for miniatyrbilde.php

<?php
/ / definer katalogbane
$dir =».»;
$bilde = exif_thumbnail ($dir . «/» . $ _GET);
header («Innholdstype: bilde / jpeg»);
ekko $bilde;
?>

Thisscript er veldig enkelt—det henter bildefilnavnet fra URL og usesthe exif_thumbnail () funksjon toextract et miniatyrbilde fra det navngitte bildet. Dette miniatyrbildet sendes deretter til nettleseren, sammen med en passende overskrift, for visning.

Plasser disse skriptene I katalogen som inneholder bildene dine, og bruk deretter nettleseren for å få tilgang til galleriet.php. Du bør se miniatyrbilder avbildene i katalogen, sammen med beskrivende informasjon om hver.Ved å klikke på et miniatyrbilde bør du ta deg til det større overordnede bildet.

Figur A Er et eksempelskjermbilde av hvordan utgangen kan se ut:


Figur A

et eksempel skjermbilde

Andthere har du det-et automatisk generert fotogalleri! Når du kopierer newimages til mappen, vises de automatisk i gallerioppføringen.Er ikke det pent?

Notat: Du canplace skript opprettet I Trinn 3i en annen katalog fra den som inneholder bildene dine, så lenge youremember å oppdatere $dirvariable på toppen av hvert skript med riktig bane til photocollection.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.