Como gerar thumbnail de FLV com php

Paulo Kanayama

Primeiramente vc deve instalar as Classes no PHP,
ffmpeg (http://ffmpeg.mplayerhq.hu/ffmpeg-export-snapshot.tar.bz2),
ffmpeg_php (http://sourceforge.net/project/showfiles.php?group_id=122353&package_id=133626)

despois dede processo de instalação, simplesmente instanciei o obj,
//$movie = new FFmpeg_movie($srcFile, false);
peguei o frame do FLV que eu desejava,
//$frame = $movie->getFrame(rand(1, ceil($movie->getFrameRate())));
gerei a imagem GD com,
//$frame_thumb = $frame->toGDImage();
e criei o thumbcomo normalmente….

Codigo:

getFrame(rand(1, ceil($movie->getFrameRate())));
$frame_thumb = $frame->toGDImage();
$width = imagesx( $frame_thumb );
$height = imagesy( $frame_thumb );
$frame = "";
$movie = null;
$thumb = @imagecreatetruecolor( $thumbW, $thumbH );
@imagecopyresized($thumb, $frame_thumb, 0, 0, 0, 0, $thumbW, $thumbH, $width, $height);
@imagedestroy($frame_thumb);
return $thumb;

Classes, PHP, Servidor Nenhum Comentário

Ligando o register globals do php

Luis Filipe Costa Carvalho

Mais um post dos rapidinhos =)

Você tem aquele site velho, em php4, que usa o register globals, tem que publicá-lo em um servidor que possui register globals off por padrão, esta pensando que vai ter que alterar toda a estrutura do site e já esta se descabelando por isso??? CALMA!

Como diria um velho amigo meu: “Seus problemas se acabaram-se!”.

É só ir no .htaccess e colocar a seguinte linha:
php_flag register_globals on

E “Voila”,o register globals para a pasta onde esta este arquivo e todas as filhas vai estar ligado =)

Abraço!

Apache, Desenvolvimento, Leu? Comente!, PHP, Servidor Nenhum Comentário

Tratando erros em PHP

Luis Filipe Costa Carvalho

Depois que um sistema é produzido ele vai para o ambiente de testes e, nem sempre, todas as possibilidades são testadas e todas as falhas são descobertas. Alguns erros passam daqui, outros dali e o site vai para um ambiente real funcionando 90%. É muito difícil um site sair da produção sem nenhuma falha. Mas ai esta a questão. Se ele der erro em ambiente real, como ficar sabendo?

Provavelmente pensando nisso o pessoal da Zend implementou a função set_error_handler, que serve para tratar erros gerados em tempo de execução.

Por exemplo, se você usar uma variável que não existe ou dividir um número por zero esta função será chamada e você trata o erro da forma que achar melhor.

Nos sites que eu desenvolvo normalmente eu uso esta função para tratar os erros:

set_error_handler('trataErro');

function trataErro($msg,$errno,$errstr,$errfile,$errline) {
   $msg ="<pre>
              \nErro....: [$errno] - $errstr
              \nDate....: ".date("d/m/Y H:i:s") . "
              \nFile....: <b>$errfile</b> : <b>$errline</b>\n
          </pre>
          <h2>Roll Back: </h2$gt;";

       $trace = debug_backtrace(); //pegando o backtrace da execução
       foreach ($trace as $k=>$v) {
           if ($v['function'] == "trataErro") continue;
           $msg .=  "<ul><li>Função: <b style=\" color: green\">" . $v['function'] . "</b></li></ul>
                   <ol>File: " . $v['file'] ."</ol>
                   <ol>Linha: " . $v['line'] ."</ol>";

           if (isset($v['args'])) {
               $msg .=  "Argumentos:<ul>";
               foreach ($v['args'] as $a) {
                   $msg .=  "<li>$a</li>";
               }
               $msg .=  "</ul>";
           }
       }

    ob_start(); //ligando buffer de saida
    echo "<h1> Variáveis Globais </h1>";
    echo "<h2> _SERVER </h2>";
    echo "<pre>\n";print_r($_SERVER);echo"</pre>";
    echo "<h2> _POST </h2>";
    echo "<pre>\n";print_r($_POST);echo"</pre>";
    echo "<h2> _GET </h2>";
    echo "<pre>\n";print_r($_GET);echo"</pre>";
    $msg .= ob_get_contents(); //pegando o conteúdo do buffer de saida
    ob_end_clean(); //limpando o buffer de saida
    echo $msg;
    die; //Se algum erro existir ele aborta a execução do script
}

Depois de gerada a mensagem, se o site estiver em ambiente real ele mostra uma mensagem falando sobre o erro e pedindo desculpas e se estiver em ambiente de teste ele mostra o erro da forma como eu organizei na função.

O uso deste tipo de função é simples e trás grandes ganhos para os programadores que conseguem ter um feedback de como esta o código do site.

Aprovado!, Desenvolvimento, Interessante, Leu? Comente!, PHP 6 Comentários

Classe que lista arquivos

Luis Filipe Costa Carvalho

Depois de algum tempo sem postar, hoje decidi postar este artigo que estava no “gatilho” faz algum tempo =)

Aqui na agência onde eu trabalho tive que fazer uma classe que lista os arquivos de uma determinada pasta de todas as suas pastas “filhas”. Para fazer isso decidi fazer uma classe que retornasse todos os arquivos de forma simples, eu aponto a pasta e a classe me retorna o caminho de todos os arquivos que tem dentro dela.

Coloquei a classe aqui no blog mas não ficou muito boa não, então eu decidi, além de deixar a classe aqui, colocar em um arquivo de texto e fazer link.

< ?php
class buscaArquivos{
    private $_pasta;
    private $_filtro = array();
    public $_arquivos = array();

    /*
        Contrutor da classe, ele cria o objeto seta a pasta de procura da classe como a
        pasta raiz do site
    */
    public function buscaArquivos(){
        $pasta = ereg_replace(DIRECTORY_SEPARATOR."+", DIRECTORY_SEPARATOR , $_SERVER['DOCUMENT_ROOT']."/");
        $this->_pasta = $pasta;
    }

    /*
        função que retorna a atual pasta de consulta da classe
    */
    public function getPasta(){
        return $this->_pasta;
    }

    /*
        função usada para setar a pasta em que a busca sera feita
    */
    public function setPasta($pasta){
        if($pasta != "") $this->_pasta = $pasta;
    }

    /*
        função que retirna o nomero de arquivos encontrados pelas busca
    */
    public function getNumeroArquivos(){
        return count($this->_arquivos);
    }

    /*
        função que retorna true se a extensao passada por parametro
        se ela constar na lista de filtro
    */
    public function checkFiltro($extensao) {
        return in_array($extensao, $this->_filtro);
    }

    /*
        retorna os arquivos que forma encontrados na busca
    */
    public function getArquivos(){
        return $this->_arquivos;
    }

    /*
        função que adiciona uma extensao aos filtros da busca, a busca não vai retornar os arquivos com a extensao adicionada
    */

    public function addFiltro($extensao){
        if(!in_array($extensao, $this->_filtro))
            $this->_filtro[] = trim($extensao);
    }

    /*
        função que verifica se a pasta é um diretório , se sim ela executa a função que faz a busca
    */
    public function procura(){
        if(is_dir($this->_pasta)){
            $this->listaArquivos($this->_pasta);
        }
    }

    /*
        função recursva que faz a busca
    */

    private function listaArquivos($dir){
        $handler = opendir($dir);
        while (false !== ($file = readdir($handler))) {
            if(!eregi("^[.]+$", $file)){
                if(!is_dir($dir."/".$file)){
                    if(!empty($this->_filtro)){
                         if(!in_array(strtolower($this->getExtensao($file)), $this->_filtro))
                             $this->_arquivos[] = ereg_replace(DIRECTORY_SEPARATOR."+", DIRECTORY_SEPARATOR , $dir.$file);
                    }else
                         $this->_arquivos[] = $dir.$file;
                }else $this->listaArquivos($dir.$file."/");
           }
        }
        unset($handler);
    }

    /*
        função que retorna o caminho não absoluto do arquivo
    */
    public function retornaLink(){
        $this->_arquivos = str_replace($_SERVER['DOCUMENT_ROOT'], "" , $this->_arquivos);
    }

    /*
        função que retorna apenas o nome do arquivo e a extensao do arquivo
    */
    static function retornaNome($iArquivoNome){
        $iNome = explode("/",$iArquivoNome);
        $iNome = end($iNome);
        return $iNome;
    }

    /*
        função que retorna o tamanho do arquivo, recebido por parametro, em KB
    */
    static function retornaTamanho($iArquivo){
        return number_format(filesize($_SERVER['DOCUMENT_ROOT'].$iArquivo) / 1024,2,",",".");
    }

    /*
        função que retona a extenção do arquivo recebido por parametro
    */
    static function getExtensao($iArquivo){
        $extensao = explode(".",$iArquivo);
        return end($extensao);
    }

}

$arq = new buscaArquivos;
$arq->addFiltro("php");  //adiciona o filtro para a extensao php, assim ele não ira lista os arquivos com esta extenção
$arq->procura(); //efetua a busca na pasta determinada
echo "$arq->getNumeroArquivos() "; //monstra o número de arquivos que a busca encontrou.

?>

Download da classe que lista arquivos de uma pasta

Esta classe me trouxe grande benefícios e grande facilidades com operações deste tipo. Espero que possa ajudar a voce também e que voce.

QUALQUER elogio, sugestão ou critica será bem-vindo =)

Classes, Desenvolvimento, Interessante, Leu? Comente!, PHP 2 Comentários

Calculando o espaço livre no hd

Luis Filipe Costa Carvalho
Calculando o espaço livre no hd

Hoje precisei de uma função que calculava quanto de espaço foi usado de uma partição. Dei uma pesquisada e descobri que existem duas funções no PHP que me permitem calcular este valor.

1) disk_total_space - ela retorna quantos bytes de capacidade total tem uma unidade que eu aponto.
2) disk_free_space - ela retorna quantos bytes tem disponíveis em uma unidade que eu passo por parâmetro

Portanto, o número total de bytes menos o numero de bytes livres me da o numero de bytes usados certo? Baseado nessa lógica, combinada com uma função que me mostra o “tamanho humano”, eu usei estas linhas de código.

< ?php

//partição da qual quero saber o espaço usado
$iParticao = "/";

echo "O espaço usado em $iParticao é: ".(HumanSize(disk_total_space($iParticao) - disk_free_space($iParticao)));

function HumanSize($iBytes){
$iType=array("", "Kilo", "Mega", "Giga", "Tera", "Peta", "Exa", "Zetta", "Yotta");
$iIndex=0;

while($Bytes >= 1024){
$iBytes /= 1024;
$iIndex++;
}

return number_format($iBytes, 2) . ” $iType[$iIndex]bytes”;
}
?>

Voce já sabia dessas funções?

Desenvolvimento, Interessante, Leu? Comente!, PHP 4 Comentários
Icons by N.Design Studio. Designed By Ben Swift. Powered by WordPress and Free WordPress Themes
RSS dos Artigos RSS dos Comentários Login