ianuarie 6, 2022

creați o galerie foto dinamică cu PHP în trei pași

dacă aveți o cameră digitală, probabil că aveți și o galerie foto digitală cu momente memorabile. Și dacă aveți o galerie foto digitală, sunteți aproape sigur că ați întâmpinat o problemă foarte frecventă: organizareafotografiile dvs. astfel încât să poată fi căutate și indexate cu ușurință.

acum,s-ar putea să nu știți acest lucru, dar majoritatea camerelor digitale încorporează automat metadate descriptive în anteturile imaginilor pe care le creează. Aceste anteturi, numite anteturi Exif (EXchangeable Image File), conțin informații despre marca și modelul camerei, ora și data la care a fost făcută fotografia, specificațiile tehnice ale fotografiei (shutterspeed, aperture și așa mai departe) și o miniatură a imaginii. În plus, mulți editori de imagini vă permit să completați aceste anteturi generate automatcu text descriptiv propriu – de exemplu, „Sally’ s first footballgame” sau „Getting beat in Malta”.

sunt sigur că puteți vedea unde mă duc cu asta. Cu un pic de imaginațieși gândire creativă, este posibil să utilizați anteturile generate de dvs. aparat de fotografiat (și, dacă aveți timp și motivație, completate în continuare de dvs.)pentru a vă organiza și descrie automat colecția de fotografii. Acest articol vă va arăta cum, folosind funcțiile PHP ‘ sexif.

Pasul 1: Asigurați-vă că PHP construi acceptă EXIF

Inorder pentru a citi anteturile EXIF, PHP construi trebuie să includă suport pentru EXIFmodule. Puteți verifica dacă acest suport este activat, prin crearea unui script PHP care conține codul afișat în Lista A.

Lista A

<?php
phpinfo();
?>

Viewthe ieșire a acestui script în browser-ul Web, și examinați lista deextensions pentru a vedea dacă EXIF este inclus. Dacă este, treceți la pasul următor. Dacă nu, va trebui să activați funcțiile EXIF ale PHP, fie prin comentarea liniei de extensie din php.PHP cu argumentul –enable-exif (Unix). Mai multe informații despre cum să faceți acest lucru suntdisponibil pe site-ul web PHP.

Pasul 2: Mutați fotografiile într-un singur director

apoi,colectați toate fotografiile într-un singur director sub serverul web documentroot. Acesta este, de asemenea, un moment bun pentru a adăuga propriile comentarii descriptive la fiecareimagine (deși acest lucru nu este esențial). Un număr de shareware bun și freewaretools sunt disponibile pentru a vă ajuta să faceți acest lucru; aruncați o privire la Exifer Pentru Windows sau RoboPhoto.

Pasul 3: Scrie cod pentru a citi anteturile foto și comentarii

pasul final este să scrieți scripturile PHP care vor extrage datele EXIF din imaginile dvs. și vor genera automat o pagină Web cu miniaturi, informații tehnice și linkuri către versiuni mai mari ale fiecărei imagini. Există două scenarii aici: primul, galerie.php, (vezi lista B) caută fotografii și extrage anteturi EXIF din ele, în timp ce al doilea, miniatură.php, (a se vedea lista C) este responsabil pentru extragerea imaginii miniatură dinfiecare fotografie.

listarea B – iată codul pentru galerie.php

<html>
<head></head>
<body>
<table>
<?php
/ / definiți calea directorului
$dir=”.”;
// itera prin fișiere
// uita-te pentru JPEG
dacă (is_dir($dir)) {
dacă ($DH = opendir($dir)) {
în timp ce (($file = readdir($dh)) != = fals) {
dacă (preg_match(„/.jpg/”, $ file)) {
// citiți anteturile EXIF
$exif = exif_read_data ($file, 0, true);
echo ” < tr >”;
// obțineți miniatură
/ / link către imaginea completă
echo „<td valign=top><a href=$dir / $fișier>< imgsrc=miniatură.php?fișier = $fișier> < / a> < td >”;
ecou ” < td valign = top><dimensiunea fontului=-1>”;
// obțineți numele fișierului
echo ” fișier: <b>” . $ exif . „< / b> < br/>”;
// obțineți timestamp
echo „Timestamp:” . $ exif . „< br/>”;
// obțineți dimensiuni imagine
ecou ” dimensiuni:”. $ exif . „x”. $ exif . „< br/>”;
// obțineți marca și modelul camerei
echo ” Camera:”. $exif;
ecou ” < / font> < / td>”;
ecou ” < / tr>”;
}
}
closedir ($dh);
}
}
?>
</tabel>
</corpul>
</html >

Thisscript utilizează funcțiile de director PHP pentru a prelua alist de toate imaginile JPEG în directorul, și apoi utilizează funcția exif_read_data() pentru a citi anteturile EXIF din fiecare imagine ca anarray. Fiecare imagine este afișată ca o miniatură folosind informațiile furnizate de miniatură.php, și eachthumbnail este ea însăși hyperlink la imaginea sa mamă. Informațiile relevante—numele imaginii, dimensiunile, marca de timp și modelul camerei—sunt extrase din aceste anteturi și afișate cu fiecare miniatură.

dacăai folosit un editor EXIF pentru a adăuga propriile comentarii la imagini, puteți accesaelemente matrice corespunzătoare pentru a prelua și afișa aceste informații, de asemenea. Uită-te în interiorul matricei $exif cu print_r($exif) pentru a aflacalea matricei pentru metadatele dvs. personalizate.

notă:diferiți producători de camere folosesc anteturile EXIF în moduri diferite. Dacă ieșirea scriptului de mai sus pare să lipsească unele informații, ar trebui să vă uitați în matricea $exif cu print_r($exif) pentru a aflaexact modul în care camera dvs. scrie datele EXIF și face ajustări corespunzătoarela tastele matrice din scriptul de mai sus (ListingB).

listarea C – și aici este codul pentru miniatură.php

<?php
/ / definiți calea directorului
$dir=”.”;
$image = exif_thumbnail($dir . „/” . $_GET);
antet („Content-Type: image/jpeg”);
echo $image;
?>

acest script este foarte simplu—preia numele fișierului imagine din URL și utilizează funcția exif_thumbnail() pentru a extrage o miniatură din imaginea numită. Această miniatură este apoi trimisă labrowser, împreună cu un antet adecvat, pentru afișare.

plasați ambele scripturi în directorul care conține fotografiile dvs., apoi utilizați browserul dvs. web pentru a accesa galeria.php. Ar trebui să vedeți miniaturi aleimaginile din director, împreună cu informații descriptive despre fiecare.Dacă faceți clic pe o miniatură, ar trebui să vă duceți la imaginea părinte mai mare.

Figura A este un exemplecranfierbinte a ceea ce ar putea arăta ieșirea:


Figura A

un exemplu de captură de ecran

șiacolo îl ai—o galerie foto generată automat! Pe măsură ce copiați imagini noi în folder, acestea vor apărea automat în lista galeriei.Nu e frumos?

notă: Puteți plasa scripturile create la Pasul 3 într-un director diferit de cel care conține fotografiile dvs., atâta timp cât vă amintiți să actualizați $dirvariable în partea de sus a fiecărui script cu calea corectă către photocollection.

Lasă un răspuns

Adresa ta de email nu va fi publicată.