Gráficos no PHP usando a classe phplot

3 Comments

Vamos criar gráficos no PHP com a biblioteca gratuita phplot.

Vou tentar ser o mais direto possível, entendendo que você já tenha um conhecimento inicial em PHP.

Faça download da última versão do phplot em:

http://www.sourceforge.net/projects/phplot


<?php
//Importando biblioteca
require("phplot.php");

//instanciando classe
$grafico = new PHPlot();

// dados do gráfico
$dados = array(
 array('Janeiro', 20),
 array('Fevereiro', 7),
 array('Março', 2),
 array('Abril', 6),
 array('Maio', 4),
 array('Junho', 1),
);

$grafico->SetDataValues($dados);

//Exibimos o gráfico
$grafico->DrawGraph();
?>

Simples certo? Agora vamos mudar ele um pouco!


<?php
//Importando biblioteca
require("phplot.php");

//instanciando classe
//delimitamos uma altura e largura do gráfico
$grafico = new PHPlot(750,600);

//Indicamos o formato de imagem a ser usado
$grafico->SetFileFormat("png");

//Indicamos o título do gráfico e o título dos dados no eixo X e Y
$grafico->SetTitle("Gráfico de exemplo");
$grafico->SetXTitle("Eixo X");
$grafico->SetYTitle("Eixo Y");

//dados do gráfico
$dados = array(
 array('Janeiro', 5),
 array('Fevereiro', 7),
 array('Março', 2),
 array('Abril', 6),
 array('Maio', 9),
 array('Junho', 8),
);

$grafico->SetDataValues($dados);

//Exibimos o gráfico
$grafico->DrawGraph();
?>

Para saber mais, você pode acessar o link:

http://www.jeo.net/php/phplot/doc

Por padrão o phplot trabalha com formato em linhas para seus gráficos, mas ele também possibilita a criação de gráficos de barras, pizza entre outros

Você altera o formato do gráfico na linha


//Gráficos em barra

$grafico->SetPlotType("bars");

GD2 – Criando Thumb para Imagens dinâmicamente

3 Comments

Nesse artigo, vamos trabalhar com a biblioteca GD2 do PHP, no qual conseguimos manipular imagens dinâmicamente.

Primeiramente para trabalhar com a GD2, você precisa habilitar antes:

  • Abra o arquivo de configuração do PHP em um editor de texto, o arquivo se chama “php.ini“. Depois procure pela linha:
;extension=php_gd2.dll 

Agora, tire “;” (ponto e virgula) da frente, a linha deve ficar assim:

extension=php_gd2.dll 

Salva o arquivo “php.ini” e reinicie seu php, para as nova configuração ser aplicada.

Esse (;) ponto e virgula, serve para comentar a linha, por isso você precisa tirar, para descomentar a linha e ativar a biblioteca. Caso essa linha não tenha o (;) , isso quer dizer que a sua biblioteca já estava habilidade“.

Agora com a GD2 ativa em seu ambiente virtual,  podemos trabalhar dinâmicamente as imagens.

O exemplo a seguir mostra como criar dinâmicamente uma Thumb (miniatura) de uma determinada imagem.

Classe: Class_Image.php


<?php

require_once "bmp_1.php";//SUPORTE A BMP
//CLASSE IMAGE
class Image{

 function Criar_thumb($path,$width) {
 //VERIFICA SE EXISTE $PATH
 if (!file_exists($path)) return THUMB_ERROR_IMAGE_NOT_FOUND;
 //DEFINE QUAL É O TIPO
 ereg ("(.*)\.([^.]+)$", $path, $partes);

 define("IMAGETYPE_JPEG", 1);
 define("IMAGETYPE_PNG",  2);
 define("IMAGETYPE_GIF",  3);
 define("IMAGETYPE_BMP",  4);
 define("IMAGETYPE_UNKNOWN",  -1);

 if     ($partes[2] == "jpg" || $partes[2] == "JPG")  $type = IMAGETYPE_JPEG;
 elseif ($partes[2] == "jpeg"|| $partes[2] == "JPEG") $type = IMAGETYPE_JPEG;
 elseif ($partes[2] == "png" || $partes[2] == "PNG")  $type = IMAGETYPE_PNG;
 elseif ($partes[2] == "gif" || $partes[2] == "GIF")  $type = IMAGETYPE_GIF;
 elseif ($partes[2] == "bmp" || $partes[2] == "BMP")  $type = IMAGETYPE_BMP;
 else return THUMB_ERROR_INVALID_IMAGE_TYPE;
 //CRIA A IMAGEM NA MEMORIA
 switch ($type) {
 case IMAGETYPE_JPEG:
 $img_origem = @imagecreatefromjpeg($path);
 break;
 case IMAGETYPE_PNG:
 $img_origem = @imagecreatefrompng($path);
 break;
 case IMAGETYPE_GIF:
 $img_origem = @imagecreatefromgif($path);
 break;
 case IMAGETYPE_BMP:
 $img_origem = imagecreatefrombmp($path);//GD NAO TEM SUPORTE ENTÃO USAMOS A FUNCAO;
 break;
 default:
 return THUMB_ERROR_INVALID_IMAGE_TYPE;
 }

 //PEGA DIMENSAO ORIGINAL E TIRA 80%
 if($img_origem){

 $origem_altura  = ImagesY($img_origem);
 $origem_largura = ImagesX($img_origem);

 $aprox=$width;

 $x = $origem_largura;
 $y = $origem_altura;
 if($x >= $y){
 if($x > $aprox)
 {
 $x1= (int)($x * ($aprox/$x));
 $y1= (int)($y * ($aprox/$x));
 } else {
 $x1 = $x;
 $y1 = $y;
 }
 } else {
 if($y > $aprox){
 $x1 = (int)($x * ($aprox/$y));
 $y1 = (int)($y * ($aprox/$y));
 } else {
 $x1 = $x;
 $y1 = $y;
 }
 }
 $x = $x1;
 $y = $y1;
 //CRIA A NOVA IMAGEM
 $img_final  = imagecreatetruecolor($x, $y);

 imagecopyresized($img_final, $img_origem, 0,0,0,0, $x+1, $y+1, $origem_largura, $origem_altura);

 } else { // Imagem "Processando..."

 $img_final = imagecreate(100, 60);
 $bg = imagecolorallocate($img_final, 255, 255, 255);
 $textcolor = imagecolorallocate($img_final, 0, 0, 255);
 imagestring($img_final, 2, 2, 20, "Processando...", $textcolor);

 }
 $img_thumb = $partes[1]."_th_.".$partes[2];

 //GRAVA A IMAGEM Q FOI CRIADA
 switch ($type) {
 case IMAGETYPE_JPEG:
 imagejpeg($img_final, $img_thumb, 100);
 break;
 case IMAGETYPE_PNG:
 imagepng($img_final, $img_thumb);
 break;
 case IMAGETYPE_GIF:
 imagegif($img_final, $img_thumb, 100);
 break;
 case IMAGETYPE_BMP:
 imagejpeg($img_final, $img_thumb);
 break;
 }
 //DEPOIS Q GRAVA, DELETA A IMAGEM DA MEMORIA
 if ($img_origem) @imagedestroy($img_origem);
 if ($img_final) @imagedestroy($img_final);

 return;
 }

}

?>

Para instânciar e executar a classe, você pode fazer da seguinte forma:

executa.php


<?php

require_once "Class_Image.php";

$image = new Image();

$image->Criar_thumb("imagem.jpg",100);

?>

O primeiro parametro, é a imagem em sí, e o segundo é o valor em pixel que a thumb vai ter. (Nesse caso ela terá aproximadamente 100px de largura)“.

Observação importante:

A GD2 não suporta imagens no formato BMP, por isso vamos usar um pacote “bmp_1.php”. (você vai perceber que estamos importando esse package na linha 3 da Class_Image.php).

Pode pegar esse package aqui. bmp_1.php

Veja o exemplo, estude a classe, e qualquer dúvida comente.

Valeu.