LOGIN:

iMasters | Por uma internet mais criativa e dinâmica

Feeds

Terça-feira, 09/11/2004 - 13:08 - Por Júlio César Martini
Seções relacionadas:

Sistema de imagens - Parte 06

Fala galera!

Essa semana adicionaremos ao nosso sistema uma função que terá por finalidade retornar o tamanho e o tipo de imagem que estamos validando. Será usada a função GetImageSize().

Essa é uma alternativa já que, com a função ImagesX() e ImagesY(), obteremos o mesmo resultado, só que a função GetImageSize(), além do tamanho, nos traz o tipo do arquivo.

Resultado final:

Alterando a função VisImagens (arquivo: funcoes.php)

Abaixo é apresentado as linhas que foram acrescentadas ou alteradas na função. Para visualizar a função completa baixe o script que se encontra no fim desse artigo.

<?
function VisImagens($tipo="NULL") {
 //GLOBAL
 global $imagens;
 global $dir;


 ... (continua)

 //VERIFICA O TIPO - SE T = EXIBE TAMANHO DAS IMAGENS
 if($tipo == "T") {
  //VISUALIZA AS IMAGENS VÁLIDAS
  foreach($arq_valido as $chave => $valor) {
  $arquivo = $arq_valido[$chave];


  //CALCULA DO TAMANHO DA IMAGEM
  $tamanho = GetImageSize($dir."\\".$arquivo);

  //VERIFICA O TIPO DO ARQUIVO
  switch($tamanho[2]) {
   case 1: $tipo = "GIF";
           break;
   case 2: $tipo = "JPG";
           break;
   case 3: $tipo = "PNG";
           break;
   case 4: $tipo = "SWF";
           break;
   case 5: $tipo = "PSD";
           break;
   case 6: $tipo = "BMP";
           break;
   case 7: $tipo = "TIFF";
           break;
   case 15: $tipo = "WBMP";
           break;
   default: $tipo = "desconhecido";
            break;
}//FECHA SWITCH


if($arquivo) {
 echo "<tr>";
 echo "<td width="40%" height="35"><font face="Arial" size="2"  color="#006699"><b>Arquivo:</b> ".$arquivo."</font></td>";
 echo "<td width="30%" height="35"><font face="Arial" size="2"  color="#006699"><b>Tamanho:</b> ".$tamanho[0]." x ".$tamanho[1]."</font></td>";
 echo "<td width="20%" height="35"><font face="Arial" size="2"  color="#006699"><b>Tipo:</b> ".$tipo."</font></td>";
 echo "</tr>";

}//FECHA IF(arquivo)
}//FECHA (foreach)
}//FECHA IF (T)

... (continua)
?>

Screenshot:

Linha 107: Chamamos a função GetImageSize() que retornará os dados em forma de array a variável $tamanho.

Linha 110: Verificamos o tipo do arquivo (GIF, JPG etc..). Para verificar a lista completa acesse o site: http://br2.php.net/manual/pt_BR/function.getimagesize.php.

Imagens incluídas no artigo para testes

Baixando o script no link abaixo você econtra na pasta TEMP, 02 imagens para serem usadas em seus testes.

Na hora que o script pedir o diretório, informe esse, ok?

Para conferir toda a série sobre o Sistema de Imagens, clique nos links abaixo:

>> Sistema de Imagens - Parte 01
>> Sistema de Imagens - Parte 02
>> Sistema de Imagens - Parte 03
>> Sistema de Imagens - Parte 04
>> Sistema de Imagens - Parte 05

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!

Todos os artigos de Júlio César Martini

13 comentários publicados

  • 1. upload de arqui

    Terça-feira, 09/11/2004, por Cássio Lacerda

    como eu modelaria um objeto para upload...

    Responder comentário
  • 2. PHP

    Sexta-feira, 12/11/2004, por Amauri Júnior

    queria saber se você pode me ajudar a instalar o Apache, o PHP e o MySQL, porque não estou conseguindo, esta dando erro.
    Qualquer coisa comunique-me se puder!

    Responder comentário
  • 3. PHP

    Sexta-feira, 12/11/2004, por Amauri Júnior

    já consegui. :)
    e também já consegui colocar o modulo Mime Magic...
    mas não funciona direito.
    valeo!

    Responder comentário
  • 4. Excelente

    Sábado, 27/11/2004, por Felipe Pereira

    Parabéns Júlio César, esse artigo ficou exelente. Eu gostaria de fazer um pedido, um artigo ensinando a atualizar o php, da versão 4.x.x pra versão 5

    Responder comentário
  • 5. como fazer um link pop-up nas imagens

    Segunda-feira, 29/11/2004, por Altair Hruba

    estou tentando desenvolver uma galeria apartir do seu sistema de imagens lá tem como fazer pop-up clicando na imagen ele aparece a origianl mas no projeto final não tem e eu gostaria de saber como faço para criar o pop-up das imagens....

    Responder comentário
  • 6. Enviar Imagens

    Quarta-feira, 01/12/2004, por Renato Medina

    Gostaria de criar um fotolog e futuramente enviar imagens por e-mail. Como faco para enviar uma imagem do meu computador para uma pasta lá no diretório do meu site?

    Aguardo retorno!

    Responder comentário
  • 7. upload

    Sábado, 04/12/2004, por Vinicius Nassimbem

    Porque você (Renato Menina) num clica no link referente às matérias sobre upload, ao invés de torrar os comentários com observações inúteis?

    Responder comentário
  • 8. PHP

    Terça-feira, 08/03/2005, por Emilio Mario Wieczorek

    E para quem utiliuza alguma versão do PHP 4, como fazer para que o script funcione, sem a função scandir()

    Responder comentário
  • 9. Oracle 9i com php consiguo exibir arquivos binários em php?

    Quinta-feira, 17/03/2005, por Jediael patricio

    A Situação é a seguinte. Tenho um projeto que quer cadastrar documentos armazenando o arquivo, do tipo pdf e doc, num campo blob do banco oracle 9i. Mas além disso a proposta tem a intenção de recuperar esses documentos armazenados no banco e que estão em binário e apresentar para o usuario. Esta se usando php e oracle 9i.

    Primeiro é feito um upload do arquivo para uma pasta no diretório c:temp
    Abaixo mostro o cabeçalho usado....

    Código:
    &gt;
    &lt;html&gt;
    &lt;head&gt;
    &lt;meta http-equiv="Content-Type" content="text/html; charset=us-ascii\n";&gt;
    &lt;meta name="GENERATOR" content="Quanta Plus"&gt;
    &lt;/head&gt;
    &lt;form name='frm_files' method="POST" enctype="multipart/form-data" action="DocumentoInclui_db.php" &gt;
    &lt;center&gt;
    &lt;table border="0"&gt;
    &lt;TABLE BORDER=0 CELLSPACING=2 CELLPADDING=5 BGCOLOR=="#FFF0FF,"&gt;
    &lt;TR&gt;&lt;TH COLSPAN=2&gt; Cadastros de Documento &lt;/TH&gt;&lt;/TR&gt;
    &lt;/table&gt;

    &lt;br&gt;
    &lt;?

    O código abaixo mostra o momento que o arquivo é passado e armazenado no C:/temp. onde $doc_name é o documento em questão

    Código:

    //RECEBE OS DADOS DO CAMPO $_FILES
    //NOME TEMPORÁRIO NO SERVIDOR
    $doc_temp = $HTTP_POST_FILES["Anexar"]["tmp_name"];
    //NOME DO ARQUIVO NA MÁQUINA DO USUÁRIO
    $doc_name = $HTTP_POST_FILES["Anexar"]["name"];
    //TAMANHO DO ARQUIVO
    $doc_size = $HTTP_POST_FILES["Anexar"]["size"];
    //TIPO MIME DO ARQUIVO
    $doc_type = $HTTP_POST_FILES["Anexar"]["type"];

    //ENVIA O ARQUIVO PARA A PASTA

    chmod('C:\temp\ ', 0777);
    @move_uploaded_file ($doc_temp, "C:\\temp\ $doc_name");

    Enviada: Qui Mar 17, 2005 12:17 am Assunto: Vamos Começar novamente

    --------------------------------------------------------------------------------

    A Situação é a seguinte. Tenho um projeto que quer cadastrar documentos armazenando o arquivo, do tipo pdf e doc, num campo blob do banco oracle 9i. Mas além disso a proposta tem a intenção de recuperar esses documentos armazenados no banco e que estão em binário e apresentar para o usuario. Esta se usando php e oracle 9i.

    Primeiro é feito um upload do arquivo para uma pasta no diretório c:temp
    Abaixo mostro o cabeçalho usado....
    Código:
    &gt;
    &lt;html&gt;
    &lt;head&gt;
    &lt;meta http-equiv="Content-Type" content="text/html; charset=us-ascii\n";&gt;
    &lt;meta name="GENERATOR" content="Quanta Plus"&gt;
    &lt;/head&gt;
    &lt;form name='frm_files' method="POST" enctype="multipart/form-data" action="DocumentoInclui_db.php" &gt;
    &lt;center&gt;
    &lt;table border="0"&gt;
    &lt;TABLE BORDER=0 CELLSPACING=2 CELLPADDING=5 BGCOLOR=="#FFF0FF,"&gt;
    &lt;TR&gt;&lt;TH COLSPAN=2&gt; Cadastros de Documento &lt;/TH&gt;&lt;/TR&gt;
    &lt;/table&gt;

    &lt;br&gt;
    &lt;?

    O código abaixo mostra o momento que o arquivo é passado e armazenado no C:/temp. onde $doc_name é o documento em questão.
    Código:

    //RECEBE OS DADOS DO CAMPO $_FILES
    //NOME TEMPORÁRIO NO SERVIDOR
    $doc_temp = $HTTP_POST_FILES["Anexar"]["tmp_name"];
    //NOME DO ARQUIVO NA MÁQUINA DO USUÁRIO
    $doc_name = $HTTP_POST_FILES["Anexar"]["name"];
    //TAMANHO DO ARQUIVO
    $doc_size = $HTTP_POST_FILES["Anexar"]["size"];
    //TIPO MIME DO ARQUIVO
    $doc_type = $HTTP_POST_FILES["Anexar"]["type"];

    //ENVIA O ARQUIVO PARA A PASTA

    chmod('C:\temp\ ', 0777);
    @move_uploaded_file ($doc_temp, "C:\\temp\ $doc_name");



    Com o arquivo armazenado no diretório o procedimento criado no sql é usado para armazenar na tabela

    Código:
    $clob = OCINewDescriptor($db, OCI_D_LOB);
    $stmt = OCIParse($db, "begin insert_doc_blob($cod_doc_arm,$cod_doc_arm,'TEMP',' $doc_name');end;");
    OCIExecute($stmt, OCI_DEFAULT);

    abaixo o procedimento criado no bd oracle9i e que armazena o arquivo na tabela

    create or replace procedure insert_arq_lob ( Diretorio varchar2, arquivo varchar2) is
    V_ARQUIVO bfile;
    V_CAMPO_LOB blob;
    V_TAM_ARQUIVO integer;
    begin
    V_ARQUIVO:=bfilename(Diretorio,Arquivo);
    dbms_lob.fileopen ( V_ARQUIVO, dbms_lob.file_readonly );
    V_TAM_ARQUIVO:=dbms_lob.getlength(V_ARQUIVO);
    insert into docs values (arquivo,empty_blob)
    returning doc into V_CAMPO_LOB;
    dbms_lob.loadfromfile(V_CAMPO_LOB,V_ARQUIVO,V_TAM_ARQUIVO);
    dbms_lob.fileclose(V_ARQUIVO);

    commit;
    end;

    Agora o problema está na hora de retornar o arquivo do banco, como sei o sql não retorna o arquivo binário e não sei como tratar esso no php......... então aí esta o problema.

    Responder comentário
  • 10. não funcionou

    Terça-feira, 19/04/2005, por Eduardo Dias

    Funcionou para alguém que possa me mandar o script melhorado ?
    como desde o começo meu servidor não funcionou eu sempre mando para o provedor para testar e sempre tenho conseguido fazer funcionar mas o sistema de imagens não funcionou ... obrigado
    Rick - ser alguém tiver um outro sistema por favor me envie

    Responder comentário
  • 11. Muito legal isso!

    Terça-feira, 08/11/2005, por Alexandre Silva

    &lt;strong&gt;Legal pra caramba!&lt;/strong&gt;&lt;br&gt;
    &lt;i&gt;Parabéns!&lt;/i&gt;

    Responder comentário
  • 12. Função scandir()

    Sexta-feira, 11/11/2005, por Daniel Alcanja

    segue aew a função pra kem usa versoes anteriores ao PHP5...

    encontrei essa dica no site www.php.net

    function scandir($dir = './', $sort = 0)
    {

    $dir_open = @ opendir($dir);

    if (! $dir_open)
    return false;


    while (($dir_content = readdir($dir_open)) !== false)
    $files[] = $dir_content;

    if ($sort == 1)
    rsort($files, SORT_STRING);
    else
    sort($files, SORT_STRING);

    return $files;
    }

    Responder comentário
  • 13. Função scandir()

    Sexta-feira, 11/11/2005, por Daniel Alcanja

    o imasters blokeia o conteudo postado nos ocmentários ehehehe... a função pode ser vista em http://br2.php.net/manual/pt_BR/function.scandir.php nos comentários no fim da página.

    Responder comentário

Poste um comentário


Os textos publicados neste espaço são de responsabilidade única de seus autores (colunistas e leitores) e podem não expressar necessariamente a opinião do iMasters.

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


Indique para um amigo

captcha

TI SHOP Produtos iMasters

  • Lançamento: CD-ROM Treinamento Aplicado de SQL - Lançamento! Treinamento Aplicado de SQL - Aprenda a trabalhar com SQL com bancos de dados Oracle e SQL Server. São mais de 100 tópicos explicados por Mauro Pichilliani, um articulistas mais lidos do iMasters. Aproveite! Apenas R$ 69,90 no TI SHOP.
  • Lançamento: Livro iMasters "O Encontro de 2 Mundos"- Este livro conta com 56 crônicas de profissionais mais admirados e influentes do mercado brasileiro de Internet. Aproveite o preço especial para leitores do iMasters. Apenas R$ 40,00 e envio imediato!
  • DVD Curso Completo de Photoshop - Do conceito à finalização Lançamento! Curso Completo de Photoshop, em DVD, com mais de 230 aulas dividas em 4 módulos: conceito, básico, avançado e finalização. Apenas R$ 69,50 no TI SHOP - Frete com 50% de desconto
  • DVD Javascript Starter - Curso Completo Com mais de 9 horas de vídeo-aulas, é um curso completo sobre Javascript. Ideal para quem deseja aprender a linguagem. Apenas R$ 64,90 no TI SHOP - Frete com 50% de desconto!

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