Arquivar

Archive for 7 Julho, 2008

CHMOD – O Que É? Como Alterar?

Todo arquivo Perl executável necessita de permissões do servidor para permitir que seus usuários executem o programa. Esta permissão ou restrição que é dada aos arquivos é feita através de um comando Unix denominado de CHMOD.

O CHMOD (change mode) possibilita alteração no modo de um arquivo ou pasta para três tipos de permissões que são estas, leitura, escrita e execução. Mas como fazer isto?

Bem como este é um comando do servidor, geralmente é feito através de um programa FTP.

Neste tutorial usaremos como exemplo o programa CuteFTP para realizar esta tarefa.

Conecte-se ao Servidor

Primeiramente configure os dados para conexão de seu servidor e em seguida, clique em Conectar.
Photobucket

 

Envie o Arquivo

Depois que você enviou seu arquivo Perl, note que ele aparecerá na lista de arquivos do servidor.
Feito isso, clique com o botão direito sobre ele e selecione CHMOD.

Photobucket

Altere o Modo

Aqui em CHMOD você poderá então alterar as permissões de seus arquivos.

Photobucket

Definindo as permissões de execução para globais, ou escrevendo ‘755′ em Manual, seu CGI estará  enfim pronto e configurado.

Obs.: Alguns scripts podem requerer outro valor de CHMOD como 777.
Alguns programas de FTP podem váriar o local da opção CHMOD.

Perl + GD Graphic Library: Exemplo 6 (Gerando Thumbnails)

Ao trabalhar com imagens, podemos utilizar o GD para gerar cópias com tamanhos diferentes, miniaturas.

A função copyResized foi feita especialmente para isto.

Junto com alguns comandos em Perl fica fácil fazer um script Gerador de Thumbnails.

Como esta é uma função nativa do GD, somente precisamos do módulo próprio:

use GD;

Este módulo nos dará várias funções para leitura de imagens, que é o que iremos precisar. Entre elas há newFromPng, newFromJpeg, newFromGif, newFromXbn, etc..

No nosso caso usaremos a newFromJPeg, pois trabalharemos com imagens JPEG.

$original = newFromJpeg GD::Image(“$caminho”);

Agora a imagem localizada em $caminho no servidor está armazenada na variável $original, pois é a imagem da qual iremos gerar a thumbnail.

Mas para gerar a nova thumbnail de modo dinâmico precisamos saber as dimensões da imagem original. Para isto usamos a função getBounds() que retorna a largura e altura da imagem.

($l,$a) = $original->getBounds();

Precisamos também setar o valor de uma das dimensões para a nova thumbnail. Sendo este valor um número qualquer especificado em $n_l, fazemos uma “regra de três básica” para descobrir a incógnita restante:

$n_a = ($n_l*$a)/$l;

Assim, $n_a será a nova altura diretamente proporcional às dimensões da nova imagem que será gerada.

Bem, agora é a hora em que o GD realmente começa a entrar em ação.

$THUMB = new GD::Image($n_l,$n_a);

Criamos uma nova imagem com as proporções obtidas e armazenamos em $THUMB.

Agora, resta-nos passar a imagem original para $THUMB. Usaremos então a função copyResized() passando como parâmetros a imagem, destX, destY, origemX, origemY, destT, destA, origemT, origemA.

$THUMB->copyResized($original,0,0,0,0,$n_l,$n_a,$l,$a);

Pronto, agora temos a thumbnail já fixada na nova imagem. Basta gravá-la em um arquivo.

Iremos utilizar o mesmo nome do arquivo, porém com o prefixo thumb_

Para obter o nome do arquivo, usamos o seguinte comando para remover as barras do caminho de origem:

$nome = $caminho =~ s/.*(/|\)//gi;

Vamos agora para a criação do novo arquivo:

open (THUMB,”>thumb_$caminho”) or die “$!”;
binmode THUMB;
print THUMB $THUMB->jpeg;
close(THUMB);

Caso nenhum erro seja retornado, será criado um novo arquivo com nossa thumbnail em novas dimensões.

Note o resultado

Photobucket

Resultado: gd-exemplo6.cgi

Photobucket

Imagem Original


Veja o Código Completo:
(gd-exemplo6.cgi)

#!/usr/bin/perl
print “Content-type:text/htmlnn”;

$caminho =”/home/gdlogobig.png”; # Imagem Original
$saida= “/home/thumbs/”;   # Saída das Thumbnails
$n_l  = “100″; # Nova largura que a thumbnail terá.

### – Chamamos o GD – ###
         use GD;
### —————- ###
$original = newFromPng GD::Image(“$caminho”); # Cria imagem para edição
($l,$a) = $original->getBounds(); # Pega as dimensões

 #### Calcula dimensões ###
$n_a = ($n_l*$a)/$l;
#######################

$THUMB = new GD::Image($n_l,$n_a); # Cria imagem vazia para a thumbnail
$THUMB->copyResized($original,0,0,0,0,$n_l,$n_a,$l,$a); # Coloca os dados na imagem
$caminho =~ s/.*(/|\)//gi; # Pega o nome da imagem

##### Grava a imagem #####
open (THUMB,”>$saida/thumb_$caminho”) or die “$!”;
binmode THUMB;
print THUMB $THUMB->png;
close(THUMB);
######################

print “Thumbnail gerada com sucesso!”;


Perl + GD Graphic Library
[ 1 | 2 | 3 | 4 | 5 | 6 | 7 ]

Perl + GD Graphic Library: Exemplo 5 (Código de Barras EAN 13)

Este exemplo utilizará o módulo GD::Barcode para a criação de Códigos de Barras.

O GD pode lhe ser útil também para trabalhar com códigos de barras.

Utilizando o módulo Barcode você poderá gerar etiquetas compatíveis com vários padrões internacionais incluindo os principais EAN-8 e EAN-13.

Para este exemplo, o módulo utilizado foi:

use GD::Barcode::EAN13;

Obs.: Usamos ‘GD::Barcode::EAN13’ pois nosso objetivo é criar um código de barras EAN-13.

Para criar o gráfico apenas chame seu instanciador passando o código de barras por parâmetro:

my $barra = GD::Barcode::EAN13->new(‘8711253001205′);

Pronto.

Feito isto basta esboçar e mandar exibir o gráfico:

binmode(STDOUT);
print “Content-Type: image/png\n\n”;
print $barra->plot->png;

Compare os códigos de barra gerados:

Resultado: gd-exemplo5.cgi

Exemplo Válido da Wikipedia: Encoding EAN-13


Veja o Código Completo:
(gd-exemplo5.cgi)

#!/usr/bin/perl
use GD::Barcode::EAN13;
# GD::EAN13 pode ser substituido por outro módulo de Barcode. (EAN8,UPCA,UPCE….)

my $barra = GD::Barcode::EAN13->new(‘8711253001205′);
# Em new() definimos o código EAN 13 para criar as barras.

binmode(STDOUT);
print “Content-Type: image/png\n\n”;
print $barra->plot->png; # Esboça e Escreve


Perl + GD Graphic Library
[ 1 | 2 | 3 | 4 | 5 | 6 | 7 ]