PIL - Python Imaging Library
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 < 0 -> 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 ! :Dfontes: PIL handbook , eu podia ta matando
Muito legal parabéns pelo post.
Agora uma divida nada a ver com Python.
Como você coloca os Códigos dentro destas caixinhas?
Estou começando um blog aqui no wordpress e não consegui usar nada para manter o código organizado.
Obrigado
Comentário de rickadt — Junho 17, 2008 @ 12:33 pm