6 stycznia, 2022

Stwórz dynamiczną galerię zdjęć za pomocą PHP w trzech krokach

jeśli masz aparat cyfrowy, prawdopodobnie masz również cyfrową galerię zdjęć z niezapomnianymi chwilami. A jeśli masz cyfrową galerię zdjęć, prawie na pewno napotkasz bardzo powszechny problem: uporządkowanie zdjęć tak, aby można je było łatwo przeszukiwać i indeksować.

możesz tego nie wiedzieć, ale większość aparatów cyfrowych automatycznie osadza metadane opisowe w nagłówkach tworzonych obrazów. Nagłówki te, zwane nagłówkami EXchangeable Image File (EXIF), zawierają informacje o marce i modelu aparatu, czasie i dacie wykonania zdjęcia, specyfikacji technicznej zdjęcia (shutterspeed, aperture i tak dalej) oraz miniaturce obrazu. Dodatkowo, wiele edytorów obrazów pozwala na uzupełnienie tych automatycznie generowanych nagłówków o własny opis – na przykład „Sally’ s first footballgame „lub”Getting drunk in Malta”.

jestem pewien, że widzisz, do czego zmierzam. Z odrobiną wyobraźni i kreatywnego myślenia, możliwe jest użycie nagłówków generowanych przez yourcamera (a jeśli masz czas i motywację, dodatkowo uzupełnione przez Ciebie), aby automatycznie zorganizować i opisać swoją kolekcję zdjęć. Ten artykuł pokaże Ci, jak to zrobić, używając funkcji Exif PHP.

Krok 1: Upewnij się, że Twoja kompilacja PHP obsługuje EXIF

Inorder aby odczytać nagłówki EXIF, twoja kompilacja PHP musi zawierać wsparcie dla EXIFmodule. Możesz sprawdzić, czy ta obsługa jest włączona, tworząc skrypt PHP zawierający kod pokazany na liście A.

Notowanie A

<?php
phpinfo ();
?>

Zobacz wyjście tego skryptu w przeglądarce internetowej i przejrzyj listę rozszerzeń, aby sprawdzić, czy EXIF jest dołączony. Jeśli tak, przejdź do następnego kroku. Jeśli nie, musisz aktywować funkcje EXIF PHP, np. poprzez od-komentowanie linii rozszerzeń w php.ini (Windows) lub kompilowanie kompilacji PHP za pomocą argumentu — enable-exif (UNIX). Więcej informacji o tym, jak to zrobić, jestdostępne na stronie internetowej PHP.

Krok 2: Przenieś swoje zdjęcia do jednego katalogu

następnie zbierz wszystkie swoje zdjęcia do jednego katalogu w katalogu documentroot serwera www. Jest to również dobry moment, aby dodać własne komentarze opisowe do eachimage (chociaż nie jest to konieczne). Wiele dobrych shareware i freewaretools są dostępne, aby pomóc ci to zrobić; spójrz na Exifer Dla Windows lub RoboPhoto.

Krok 3: Napisz kod do odczytu nagłówków zdjęć i komentarzy

ostatnim krokiem jest napisanie skryptów PHP, które wyodrębnią dane EXIF z yourimages i automatycznie wygenerują stronę internetową z miniaturami, informacjami technicznymi i linkami do większych wersji każdego obrazu. Są dwa skrypty: pierwszy, Galeria.php, (patrz lista B) wyszukuje Zdjęcia i wydobywa z nich nagłówki EXIF, podczas gdy drugi, miniaturkę.php, (Patrz Listing C) jest odpowiedzialny za wyodrębnienie miniatury obrazu z każdego zdjęcia.

Listing B-Oto kod do galerii.php

<html>
<head></head>
<body>
<table>
<?php
/ / define directory path
$dir = „.”;
// iteruj przez pliki
// poszukaj plików JPEG
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) != = false) {
if (preg_match(„/.jpg/”, $file)) {
// read Exif headers
$exif = exif_read_data($file, 0, true);
echo „<tr>”;
// Pobierz miniaturę
/ / link do pełnego obrazu
echo „<td valign=top><a href=$dir / $file>< imgsrc=thumbnail.php?file=$file></a> < td>”;
echo ” <td valign = top> < rozmiar czcionki=-1>”;
// Pobierz nazwę pliku
echo „plik: <b>” . $exif . „</b><br/>”;
// get timestamp
echo „Timestamp:” . $exif . „<br/>”;
// Pobierz wymiary obrazu
echo „Wymiary:” . $exif . „x”. $exif . „<br/>”;
// Pobierz markę i model aparatu
echo „Camera:” . $exif;
echo ” < / font> < / td>”;
echo ” < / tr>”;
}
}
closedir ($dh);
}
}
?>
</tabela>
</ciało>
</html >

Thisscript używa funkcji katalogu PHP do pobierania listy wszystkich obrazów JPEG w katalogu, a następnie używa funkcji exif_read_data() do odczytu nagłówków EXIF z każdego obrazu jako anarray. Każdy obraz jest wyświetlany jako miniatura z wykorzystaniem informacji dostarczonych przez miniaturę.php, a każdy z nich jest sam w sobie hiperłączem do swojego obrazu nadrzędnego. Istotne informacje-Nazwa obrazu, wymiary, znacznik czasu i model aparatu-są wyodrębniane z tych nagłówków i wyświetlane z każdą miniaturą.

jeśli używasz edytora EXIF do dodawania własnych komentarzy do obrazów, możesz uzyskać dostęp do odpowiednich elementów tablicy, aby pobrać i wyświetlić te informacje. Zajrzyj do tablicy $exif za pomocą print_r ($exif), aby znaleźć ścieżkę tablicy dla niestandardowych metadanych.

Uwaga: różni producenci aparatów używają nagłówków EXIF na różne sposoby. Jeśli w powyższym skrypcie brakuje pewnych informacji, powinieneś zajrzeć do tablicy $exif za pomocą print_r ($exif), aby dowiedzieć się, w jaki sposób kamera zapisuje dane EXIF, i dokonać odpowiednich ustawień klawiszy tablicy w powyższym skrypcie (ListingB).

Listing C-a tu kod do miniaturki.php

<?php
/ / define directory path
$dir = „.”;
$image = exif_thumbnail ($dir . „/” . $_GET);
header(„Content-Type: image/jpeg”);
echo $image;
?>

Thisscript jest bardzo prosty-pobiera nazwę pliku obrazu z adresu URL i używa funkcji exif_thumbnail (), aby wyciągnąć miniaturę z nazwanego obrazu. Ta Miniatura jest następnie wysyłana do przeglądarki, wraz z odpowiednim nagłówkiem, w celu wyświetlenia.

umieść te skrypty w katalogu zawierającym Twoje zdjęcia, a następnie użyj przeglądarki internetowej, aby uzyskać dostęp do galerii.php. Powinieneś zobaczyć miniatury obrazów w katalogu, wraz z opisowymi informacjami na każdym z nich.Kliknięcie miniatury spowoduje przejście do większego obrazu nadrzędnego.

rysunek a jest przykładem tego, jak może wyglądać wyjście:


rysunek A

przykładowy zrzut ekranu

Andthere you have it-automatycznie generowana Galeria Zdjęć! Po skopiowaniu newimages do folderu automatycznie pojawią się one na liście galerii.Czy to nie miłe?

Uwaga: Możesz umieścić Skrypty utworzone w kroku 3W innym katalogu niż katalog zawierający Twoje zdjęcia, o ile chcesz zaktualizować $dirvariable na górze każdego skryptu z prawidłową ścieżką do fotokolekcji.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.