Terça-feira, 24 de agosto de 2004 às 14h35

Sistema de imagens - Parte 02

Faltam -1 dias! Inscreva-se agora! O maior encontro de profissionais web da américa latina.

Fala galera! Dando continuidade ao nosso sistema de imagens, essa semana estarei apresentando algumas melhorias no código da semana passada, seguindo as dicas passadas pelo nosso amigo Cristiano Andrade Franco que postou seu comentário nessa coluna.

Nesse artigo melhorei a parte que faz a verificação do tipo de arquivo. No nosso caso, imagens do tipo gif, jpg e png e pra isso configurei o PHP para trabalhar com o módulo Mime Magic que nada mais é que uma extensão derivada do Apache.

Instalação do Módulo Mime Magic

Segue abaixo os detalhes para configuração do módulo. Maiores detalhes consultar o www.php.net.

Aqui na minha máquina foi configurado da seguinte forma:

- Windows XP Professional
- PHP 4.3.7
- Apache 1.3.29

01. Editar o arquivo php.ini e tirar o ponto e vírgula da seguinte linha (extension=php_mime_magic.dll).

02. Adicionar ao final do arquivo php.ini:

;MIME
mime_magic.magicfile ="DIRETORIO ONDE ESTÁ O PHP/magic.mime"

03. Crie um arquivo index.php com o seguinte comando:

<?
phpinfo();
?>

04. Execute o script index.php no browser e veja se a extensão foi carregada com êxito.

Segue abaixo, o script da semana passada usando a extensão Mime Magic:

<?
//FUNÇÃO QUE RETORNA AS IMAGENS DE UM DIRETÓRIO

function RetImagens($dir) {
  //ABRE O DIRETÓRIO
  $aberto = opendir($dir);

  //LÊ O DIRETÓRIO
  while($arq = readdir($aberto)) {
    //VERIFICA SE É DIRETÓRIO(.) OU SUBDIRETÓRIO
    if( ($arq <> ".") AND ($arq <> "..") ) {
     //PATH COMPLETO DO ARQUIVO
     $completo = $dir.$arq;
     //TIPO MIME DO ARQUIVO
     $tipo = mime_content_type($completo);

     //VERIFICA OS ARQUIVOS QUE SÃO IMAGENS
     if( ($tipo == "image/gif") OR
         ($tipo == "image/jpeg") ) {
         $imagens[] = $arq;

     }//FECHA IF (VERIFICA TIPO DE ARQUIVO)
   }//FECHA IF(DIRETÓRIO)
 } //FECHA WHILE

 //RETORNA AS IMAGENS
 return ($imagens ? $imagens : 0);
}//FECHA FUNCTION

//DIRETÓRIO A SER PESQUISADO
$dir = "c:\\pagina\\imasters\\103\\imagens\\";

//EXECUTA A FUNÇÃO QUE VAI VARRER O DIR
$imagens = RetImagens($dir);

//TÍTULO
echo "<h2>Imagem contidas no diretório:".$dir."</h2>";

if($imagens) {
 //ORDENA AS IMAGENS SELECIONADAS
 sort($imagens);

 //EXIBE AS IMAGENS SELECIONADAS
 foreach($imagens as $valor) {
  echo "<img src="".$dir.$valor."">";

 }//FECHA FOREACH
}//FECHA IF
else {
 echo "Não retornou nenhuma imagem.";
}

?>

Analisando o script:

Linha 42 - Especificamos o diretório a ser varrido.
Linha 45
- Chamamos a função RetImagens que vai nos retornar todas as imagens contidas no diretório em um array.
Linha 51
- Verificamos se retornou alguma imagem depois da varredura no diretório.
Linha 53
- Ordenamos as imagens.
Linha 56
- Exibimos as imagens contidas no array.

Linha 15 - Abrimos o diretório informado.
Linha 18
- Lemos os arquivos do diretório especificado.
Linha 20
- Verificamos se é diretório (.) ou subdidretório(..)
Linha 24
- Usando a função mime_content_type() retornamos o tipo do arquivo.
Linha 27
- Verifico as extensões que são permitidas, no nosso caso, estou liberando apenas as imagens gif e jpg. Se vocês quiserem podem adicionar outras extensões como bmp e png. Se for gif ou jpeg adicionou no array imagens[].
Linha 35
- Feito toda a varredura retorno o resultado da função.

Resultado:

Executando o script 103.php teremos como resultado as imagens contidas no diretório:

Se o script não encontrar nenhuma imagem:

Para baixar o script, clique no link abaixo.

DOWNLOAD

Clique AQUI e faça o download do script.

Semana que vem tem mais. Espero que vocês tenham gostado :-)

Não deixe de nos enviar críticas ou sugestões para o próximo assunto, afinal a coluna é de vocês.

Boa semana a todos! Até mais.

11 comentários

 Wellington
25/08/2004 18h45

Paginação

Achei ótimo esse artigo, mas teria como continuar na versão 3 com paginação ?

 Wellington
25/08/2004 18h49

Paginação

Muito bom o artigo, mas queria ver a versão 3 com uma paginação, tipo, listando 50 as imagens dai ele faz 10 linhas sendo 5 colunas. Como se fosse um album de fotos, mas com paginação. do tipo 1 | 2 | 3 | 4

 angelica yuri kobayashi
29/08/2004 18h20

Phint Screen

Olá Julio Martini, á muito tempo venho acompanhando suas colunas... E aproveitando que agora você está escrevendo sobre imagens & php, eu gostaria de saber se é possivel dar um print screen da tela pelo php e salvar a imagem, no formato jpg por exemplo..

 Patrick
29/08/2004 22h57

Arquivos

Como esse script poderia ser desenvolvido para Redimensiomento de Arquivos:

Suponhamos que eu não queira ficar criando links e links de diversos arquivos para download.

quando eu abrisse a página http://127.0.0.1/download.php listasse todos os arquivos que tenho nesse diretório
e em subdiretórios sendo eles .exe . zip .rar

 Wellington
31/08/2004 15h28

Fabianosousa2003

Nada haver seu comentário, pois olha os títulos Sistema de imagens - Parte 02, ele está trabalhando com imagem. Acho que outro comentário seria melhor enviar e-mail.

 Fabricia Ribeiro
31/08/2004 16h09

Paginação

Poderia mostrar como fazer paginação na foto de exibição?

Ex: &lt;&lt; anterior - próxima &gt;&gt;

 Wellington
02/09/2004 15h09

Paginação

Não, tem que ser paginação do tipo
1 | 2 | 3 | 4 | 5

 Fabricia Ribeiro
03/09/2004 03h01

Paginação

Essa exibição com números serve nos thumbs, eu falei na foto de exibição, sacou?

 espanka
06/02/2006 11h31

duvida

ola amigo fiz seu primieiro SCRIPT mas o segundo nao esta funcionando nao tem anda errado, copiei o arquivo magic pro final da lista do php.ini e tudo mas , so que nao encontra nenhuma foto no diretorio que eu especifico, e na pasta PHP nao tem nenhum arquivo nem dll com mime.magic nao, vc pode me ajudar ?

 Marco Santos
23/01/2008 17h00

Imagens, PrintScreen com PHP

Tendo acessado seu http://imasters.uol.com.br/artigo/2486/php/sistema_de_imagens_-_parte_02/ e vendo sua experiencia pergunto se é possivel realizar um Print Screen cliquando em um botão e salvando automaticamente essa imagem no HD. Tudo isso em PHP. Pode me instruir (orientar) para que eu possa fazer isso. Obrigado.

 Marconi César
03/08/2008 14h02

imagens não são exibidas

as imagens aparecem só aqueles quadradinhos com um X no meio como se elas não existissem, pode me dizer porque?

Cancelar resposta

Qual a sua opinião?

Faça login abaixo ou cadastre-se rapidamente.


Sobre o Autor
Júlio César Martini atualmente presta serviços de WebMaster/Programador para o UOL (http://www.uol.com.br), Graduado em Tecnólogo em Informática pela UNIFIAN - Faculdades Anhanguera e Pós-Graduado em Desenvolvimento de Software para Web pela UFSCAR. Foi o primeiro profissional a chegar à marca de 100 artigos publicados no iMasters e trabalha com PHP desde 2000. Site: http://www.juliocesarmartini.com

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.