ldev

Maio 11, 2008

scans

Arquivado em: programas — Tags:, — Lucas Nogueira @ 7:02 pm

Achei um ótimo site com vários scans de capas de jogos, o GameScanner.org. Lá tem capa de jogos desde o Nintendo NES até o Playstation 3, além de ter capas de DVDs.

Também encontrei um site que guarda scans de revistas sobre informática de uns 20 anos atrás. É bem tosco ler umas revistas falando sobre hackers :P

Janeiro 5, 2008

PIL – Python Imaging Library

Arquivado em: programação — Tags:, — Lucas Nogueira @ 7:20 am

Estou iniciando um estudo sobre o Python Imaging Library e quero fazer uns resumos do que vou aprendendo. Os códigos vão falar por si, então não vou comentar muito …

instalação do PIL:

Windows: pacote .exe ( para python 2.5 )

Debian-based:
sudo apt-get install python-imaging


abrindo uma imagem

import Image
img = Image.open(" ball.png")

Os seguintes atributos podem ser muito úteis nos seus programas:

img.format
img.size
img.mode

lendo e salvando uma imagem

O PIL suporta vários formatos de imagem. Para salvar uma imagem use o método save(filepath , FT=filetype)

import Image

img = Image.open(" ball.png ")
img.save( "ball-convertida.jpeg" , "JPEG")  # o segundo argumento é opcional ..

criando miniaturas

import Image

tsize = 100,100

img = Image.open(" ball.png ")
img.thumbnail ( tsize , image.ANTIALIAS ) #o image.ANTIALIAS é opcional ...
img.save( "ball_mini.png" )

recortando e colando imagensusando o método crop( a , b , c , d ) você pode criar um subretângulo de uma imagem. OBS: a,b são as coordenadas do ponto superior-esquerdo e c,d as coordenadas do ponto inferior-direito. A área do local aonde o retângulo será colado deve ser do mesmo tamanho do retângulo

import Image

img = Image.open("abc.PNG")

rcoord = 25,25 , 100,100

rect = img.crop( rcoord )
rect.transpose( Image.ROTATE_90 ) # faz o pedaco girar 90 graus

img.paste( rect , rcoord )
img.save("abc.PNG")

transformações geométricas

import Image

img = Image.open("ball.PNG")

out = img.resize( (200,200) ) #blah
out = out.rotate( -45 ) # a  clockwise ; a > 0 -> anticlockwise
out = out.transpose( Image.ROTATE_90 ) # mesma cois que rotate()
out.save("balll.PNG")

OBS: no métdo transpose() também pode ser usado os atributos:

Image.FLIP_LEFT_RIGHT

Image.FLIP_TOP_BOTTOM

filtros

import ImageFilter
out = img.filter( ImageFilter.DETAIL )

operações com pixelscom o método point() você pode brincar com os valores do pixel. Usando uma função lambda pode-se aplicar algo em todos os pixels

out = img.point(lambda i: i * 1.2) # multiplicando todos os pixels por 1.2

você pode aplicar esses efeitos individualmente

import Image

rcord = 10,10,300,300

img = Image.open("abc.PNG")
rect = img.crop(rcord)
rect = rect.point(lambda i: i*2)
img.paste(rect , rcord)
img.save("abc-n.PNG")

escrevendo nas imagens


import Image
import ImageDraw # modulo de primitivas e textos

img = Image.open("abc.PNG")
dr = ImageDraw.Draw(img)
pos = 0,0
dr.text( pos , "http://ldev.wordpress.com")
img.save("abc-n.PNG")

escrevendo nas imagens usando o ImageFont

import ImageFont

ft = ImageFont.truetype("tahoma.ttf",15)
dr.text( pos , "http://ldev.wordpress.com" , font=ft )

Em breve postarei mais sobre o PIL ! :D fontes: PIL handbook , eu podia ta matando

Blog no WordPress.com.