crie uma galeria de fotos dinâmica com PHP em três etapas
Ifyou tem uma câmera digital, você provavelmente também tem uma galeria digitalphoto de momentos memoráveis. E se você tem uma galeria de fotos digital, é quase certo que encontrou um problema muito comum: organizarsuas fotos para que possam ser facilmente pesquisadas e indexadas.
Agora,você pode não saber disso, mas a maioria das câmeras digitais incorpora automaticamente metadados descritivos nos cabeçalhos das imagens que criam. Esses cabeçalhos, chamados de cabeçalhos EXchangeable Image File(EXIF), contêm informações sobre a marca e o modelo da câmera, a hora ea data em que a foto foi tirada, as especificações técnicas da foto (shutterspeed, abertura e assim por diante) e uma miniatura da imagem. Além disso, muitos editores de imagem permitem que você complemente esses headers gerados automaticamente com texto descritivo próprio – por exemplo, “o primeiro jogo de futebol de Sally” ou “ficar bêbado em Malta”.
i’msure você pode ver onde eu estou indo com isso. Com um pouco de imaginação e pensamento criativo, é possível usar os cabeçalhos gerados pelo yourcamera (e, se você tiver tempo e motivação, complementados por você)para organizar e descrever automaticamente sua coleção de fotos. Este artigo irá mostrar-lhe como, usando funções PHP ‘ sexif.Etapa 1: Certifique-se de que sua compilação PHP suporte EXIF
para ler cabeçalhos EXIF, sua compilação PHP deve incluir suporte para o EXIFmodule. Você pode verificar se esse suporte está habilitado, criando um script PHP contendo o código mostrado na listagem A.
Listagem A
<?php
phpinfo ();
?>
Viewthe saída deste script em seu navegador da Web, e rever a lista ofextensions para ver se EXIF está incluído. Se for, vá para a próxima etapa. Caso contrário, você precisará ativar as funções EXIF do PHP, eitherby un-comentando a linha de extensão em php.ini (Windows) ourecompilando sua compilação PHP com o argumento — enable-exif (UNIX). Mais informações sobre como fazer isso édisponível no site PHP.
Passo 2: Mova suas fotos para um único diretório
em seguida, colete todas as suas fotos em um único diretório no documentroot do servidor da Web. Este também é um bom momento para adicionar seus próprios comentários descritivos a cadaimagem (embora isso não seja essencial). Uma série de bons shareware e freewaretools estão disponíveis para ajudá-lo a fazer isso; dê uma olhada no Exifer Para Windows ou RoboPhoto.
Passo 3: Escrever código para ler a fotografia cabeçalhos e comentários
Final passo é escrever os scripts PHP que irá extrair os dados EXIF das yourimages e gerar automaticamente uma página da Web com miniaturas, technicalinformation e links para versões maiores de cada imagem. Existem dois scriptshere: o primeiro, galeria.php, (veja a listagem B) procura fotos e extrai cabeçalhos EXIF deles, enquanto o segundo, miniatura.php, (veja a listagem C)é responsável por extrair a imagem em miniatura decada foto.
listagem B-Aqui está o código da galeria.php
<html>
<head></head>
<body>
<table>
<?php
/ / definir Caminho do diretório
$dir=”.”;
// iteração através de arquivos
// olhar para JPEGs
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) != = false) {
if (preg_match(“/.se você estiver procurando por um arquivo, clique em” Salvar Arquivo “e clique em”Salvar arquivo”.;
// get miniatura
// link para imagem completa
echo “<td valign=top><a href=$dir/$file><imgsrc=miniatura.php?arquivo=$arquivo></a><td>”;
echo “<td valign=top><tamanho da fonte=-1>”;
// obter o nome do arquivo
echo “o Arquivo: <b>” . $ exif . “</b> <br/>”;
// obtenha o carimbo de data / hora
echo ” carimbo de data / hora:”. $ exif . “<br/>”;
// obter dimensões da imagem
echo “Dimensões” . $ exif . “x”. $ exif . “< br/>”;
// obtenha a marca e o modelo da câmera
echo ” Câmera:”. $ exif;
echo “</font></td>”;
echo “</tr>”;
}
}
closedir($dh);
}
}
?>
</tabela>
</corpo>
</html>
Thisscript usa PHP funções de diretório para recuperar alist de todas as imagens JPEG no diretório e, em seguida, usa o exif_read_data() função para ler os cabeçalhos EXIF de cada imagem como anarray. Cada imagem é exibida como uma miniatura usando as informações fornecidas pela miniatura.php, e cadachthumbnail é em si hiperlinked para sua imagem pai. Informações relevantes-nome da imagem, dimensões, carimbo de data / hora e modelo da câmera—são extraídas desses cabeçalhos e exibidas com cada miniatura.
se você usou um editor EXIF para adicionar seus próprios comentários às imagens, você pode acessaros elementos de matriz apropriados para recuperar e exibir essas informações também. Olhe dentro da matriz $exif com print_r ($exif) para descobrir o caminho da matriz para seus metadados personalizados.
Nota: diferentes fabricantes de câmeras usam os cabeçalhos EXIF de maneiras diferentes. Se theoutput do script acima parece estar faltando alguma informação, você shouldlook dentro do $exif matriz com print_r($exif) para encontrar outexactly como a câmera grava os dados EXIF, e fazer as devidas adjustmentsto as chaves do array no script acima (ListingB).
listando C-e aqui está o código para miniatura.php
<?php
/ / definir Caminho do diretório
$dir=”.”;
$ image = exif_thumbnail($dir . “/” . $_GET);
cabeçalho (“tipo de Conteúdo: Imagem / jpeg”);
echo $image;
?>
Thisscript é muito simples-ele recupera o nome do arquivo de imagem do URL e USAA função exif_thumbnail () para extrair uma miniatura da imagem nomeada. Esta miniatura é então enviada para o navegador, juntamente com um cabeçalho apropriado, para exibição.
coloque esses scripts no diretório que contém suas fotos e, em seguida, use o navegador yourWeb para acessar a galeria.pai. Você deve ver miniaturas deas imagens no diretório, juntamente com informações descritivas sobre cada uma.Clicar em uma miniatura deve levá-lo à imagem pai maior.
Figura A é um examplescreenshot do que a saída pode parecer:
a Figura de Um
Um exemplo de imagem
Andthere você tem—uma gerado automaticamente a galeria de fotos! Ao copiar novas imagens para a pasta, elas serão exibidas automaticamente na listagem da galeria.Não é legal?
Nota: Você canplace os scripts criados no Passo 3in um diretório diferente daquele que contém suas fotos, desde que youremember para atualizar o $dirvariable no topo de cada script com o caminho correto para o photocollection.