Terça-feira, 29 de Janeiro de 2008

Desenvolvendo para internet

Achei num blog por ai, e como to meio sem inspiração vai isso mesmo!

Sexta-feira, 25 de Janeiro de 2008

Recorte de imagens usando Python/Django/PIL

respondendo um dúvida na lista django-brasil, resolvi colocar aqui também um exemplo de recorte de imagem através do django.

from django.utils.httpwrappers import HttpResponse
from PIL import Image

def image(request,arquivo,largura=100,altura=100):

im = Image.open(arquivo)
imre = im.transform((largura, altura), Image.AFFINE,(1,0,0,0,1,0))

response = HttpResponse(mimetype="image/png")
image.save(response, "PNG")
return response


:)

Quarta-feira, 23 de Janeiro de 2008

DjangoPeople

Nos últimos meses, muitos usuários aderiram ao Django e, consequentemente ao Python! isso é muito bom e fico muito feliz com isso! :). No entnado, são pouco os usuários que utilizam as listas de discussão, irc, ou coisas do tipo, simplesmente entram no site, baixam o framewor, lêem a documentação (que'é muito boa por sinal!) e começam a desenvolver!

Então o co-criador do Django, Simon Willison e Natalie Downe, criaram o site djangopeople.net com o objetivo de "dar uma chance" de mostrar ao o mundo quem são os usuários desse fantástico framework (pouquinho puxa-saco não? ehhe)

Então se voce desenvolve sites em django, visite o site, e coloque mostre-se!

Código de Barras em Python

Estou trabalhando na geração de boletos bancários utilizando PIL e ReportLab, fiz uma pesquisada por ai e não havia um código de barras utilizando o padrão que precisava que era o padrão 2 de 5 intercalado. Por isso estou postando o código aqui! :)

Para executar é necessário do modulo PIL instalado!

import Image
import ImageDraw

class CodeBarPil:
"""
Classe base para implementação do código de barras
"""

def __init__(self):
pass

def drawCodeBarInterleaved2of5(self, value, posX=0, posY=0, height = 50):
"""
Desenha codigo de barras padrão intercalado 2 de 5
"""
im = Image.new('RGB',(750,80),'white')
draw = ImageDraw.Draw(im)

pattern = ('00110', '10001', '01001', '11000', '00101',
'10100', '01100', '00011', '10010', '01010')

# value deve possuir comprimento par, acrescenta 'zero' caso impar
if (len(value) % 2) != 0:
value= '0' + value
# faz intercalação dos pares
l=''
for i in range(0,len(value),2):
p1=pattern[int(value[i])]
p2=pattern[int(value[i+1])]
for p in range(0,5):
l+=p1[:1] + p2[:1]
p1=p1[1:]
p2=p2[1:]
# gera espacos e barras
barra=True
b=''
for i in range(0,len(l)):
if l[i] == '0':
if barra:
b+='B'
barra=False
else:
b+='E'
barra=True
else:
if barra:
b+='BBB'
barra=False
else:
b+='EEE'
barra=True
# concatena inicio e fim
b='BEBE' + b + 'BBBEB'
for i in range(0,len(b)):
if b[i] == 'B':
draw.line((posX,posY,posX,posY + height),'black')
else:
draw.line((posX,posY,posX,posY + height),'white')
posX+=1
return imagem