Você está na página 1de 5

EUPODIATÁMATANDO m a s t ô

b l o g a n
ENTRE EM CONTATO QUEM SOMOS NÓS?

Pyh
tonm
I agnigLbirary BUSCA

O Python Imaging Library (PIL) é uma biblioteca Python para que você possa escrever programas que abram
e manipule imagens de maneira simples e ao mesmo tempo poderosa. Search

Se você está usando Python como alternativa ao PHP, vai querer usar o PIL como alternativa à GD.
Vou mostrar aqui as principais funções da PIL. ZURA!

Philips HTS6520
Com DVD 2
Caixas
a partir de2.1
Subwoofer
R$ 999,00

angie.jpg, Angelina Jolie e a Python Sony Bravia LCD


55" Full HD,
Nos exemplos eu vou usar essa foto acima, angie.jpg. Conversor
aDigital
partir de
-
Abrindo uma imagem R$ 4.599,00
KDL55EX505

O primeiro código abre uma imagem, diz a largura e altura da imagem e o modo de indexação das cores.

import Image
im = Image.open("angie.jpg")
print im.size, im.mode GPS Celular
Jogos Xbox Jogos PS3
Notebook Netbook
Isso vai retornar:

(389, 410) RGB GIF ANIMADO DA SEMANA

Ou seja, a largura é de 389 pixels, a altura é de 410 pixels. O formatura de indexação das cores é RGB.
Miniatura
Agora vamos abrir a imagem e fazer uma miniatura de tamanho 128×128 com nome miniatura_angie.jpg.

import Image
im = Image.open("angie.jpg")
im.thumbnail((128,128))
im.save("miniatura_angie.jpg") SÓ ATÉ MEIA NOITE

Isso vai gerar essa imagem:

converted by Web2PDFConvert.com
miniatura_angie.jpg

Miniatura com antialiasing


Podemos fazer a mesma miniatura usando suavização (Antialias):

import Image
tamanho = 128,128
nome = "angie.jpg"
im = Image.open(nome)
im.thumbnail(tamanho, Image.ANTIALIAS)
im.save("miniatura_"+nome)

MEU TWITTER

silveira: algumas das placas de ontem.


eu vi algumas delas.
http://www.buzzfeed.com/mjs538/the-
miniatura_angie.jpg com suavização
100-best-signs-at-the-rally-to-restore-
sanity
A diferença é sensível: silveira: beck`s rally x stewart and
colbert's rally pra quem dizia que ia ser
um fracasso http://i.imgur.com/AoxXh.jpg
silveira: pumpkim pie!
silveira: eu tenho umas 5 chefes
mulheres e agora também uma
presidenta. elas estão tomando de conta.
silveira: ontem eramos 215000 + eu
http://www.cbsnews.com/8301-
A da esquerda é sem antialias, a da direita é com
503544_162-20021284-503544.html
Converter um BMP para JPEG
Basta abrir o arquivo e depois salvar ele com codificação JPG. No caso, vamos abrir uma imagem chamada
flor.bmp e salva-la como flor.jpg. SUPER DICA

import Image
im = Image.open("flor.bmp")
im.save("flor.jpg", "JPEG")

Convertendo um monte de arquivos para JPG


Agora suponha que você tenha um diretório cheio de arquivos bmp e quer passar tudo para jpg de uma só
vez.

import os
import Image

cwd = os.getcwd()
for arquivo in os.listdir(cwd):
if arquivo.endswith('.bmp'):
im = Image.open(arquivo)
nome = arquivo.split('.')[0]
im.save(nome+".jpg", "JPEG")

A função getcwd do módulo os nos fornece o diretório de onde o programa foi chamado, guardamos isso em
cwd. Para todo arquivo naquele diretório nos, testamos se ele termina com .bmp. Se sim, nos abrimos ele,
pegamos a parte do nome que vem antes do .bmp e salvamos ele com a extensão .jpg. Eu já falei sobre o
método split num post anterior. *_*
O mesmo raciocínio desse programa pode ser empregado para se criar, por exemplo, miniaturas de todos os
arquivos de um diretório.
Rotacionando uma imagem
Sexy Image
Sexy Image - Deals!
import Image Save on Sexy Image
www.DealTim e.com
img = Image.open("miniatura_angie.jpg")
img2 = img.rotate(45)
img3 = img.rotate(60)
img4 = img.rotate(90) Free Stock Images
Over 10M HD Images
converted by Web2PDFConvert.com
Over 10M HD Images
img2.save("angie_45.jpg") Available Now Sign up
img3.save("angie_60.jpg") For Your Free Account
img4.save("angie_90.jpg") Now
www.Dream stim e.com

A miniatura seguida dos arquivos angie_45, angie_60 e angie_90: Helvetica Frutiger


Optima
+ 120,000 more Fonts
at Linotype All the
font you need. Buy
now!
www.linotype.com

Info on Top Bloggers


News, Photos, Videos,
More. Find What
Escrevendo um texto na imagem You're Looking For
O Image tem vários sub módulos, um para cada classe de funcionalidade. O ImageDraw provê desenho de With Bing!
www.Bing.com
primitivas e de texto. Aqui eu uso a fonte padrão do Image, para mais fontes e tamanhos você deve ver o
ImageFont. Break out of your
shell
import Image NYC trading firm hiring
import ImageDraw sysadmins with
functional prog.
img = Image.open("angie.jpg") experience
draw = ImageDraw.Draw(img) janestreet.com
texto = "www.eupodiatamatando.com"
pos = 50,50
draw.text(pos, texto)
img.save("angie_com_texto.jpg") AVISO
Nós abrimos uma imagem, instânciamos um Draw daquela imagem e colocamos um texto na posição 50,50, Esse site é praticamente um site de humor
a contar do canto superior esquerdo da imagem. e não deve ser levado a sério. Só alguém
muito burro acreditaria em alguma coisa lida
aqui.

Uncategorized (546)

Aplicação de texto sobre imagem

Operações pixel a pixel


Vou abrir a imagem da Angelina, fazer dela uma miniatura de 128×128 e aplicar algumas funções.
A imagem tem um método point, onde você pode passar uma função para ser aplicada em todos os pontos.
Vamos criar funções de uma linha usando o lambda.

import Image
angie = Image.open("angie.jpg")
angie.load()
angie.thumbnail((128,128))
img2 = angie.point(lambda i: i * 2.0)
img3 = angie.point(lambda i: i < 100 and 255)
img4 = angie.point(lambda i: i * 0.5)
img5 = angie.point(lambda i: i**2)
img2.save("angie2.jpg")
img3.save("angie3.jpg")
img4.save("angie4.jpg")
img5.save("angie5.jpg")

A miniatura original seguida dos 4 resultados:

converted by Web2PDFConvert.com
Bem, dá pra fazer muito mais com o PIL. Dê uma olhada no tutorial oficial ou no Handbook para conhecer os
outros módulos.
Instalação no Linux
Procure o pacote python-imaging. Em geral:

apt-get install python-imaging

Instalação no Windows
Há um instalador EXE aqui. Antes de baixar verifique a versão do seu Python.
Uma ótima maneira de aprender mais são com livros de Como Programar em Python pelos
menores preços que você encontra no Buscapé.

COMMENTS (9) RELATED POSTS

#1 written by Lucas [ GNUtopia ]


about 3 years ago

excelente post ;D

#2 written by cabuloso
about 3 years ago

realmente muito bom o post.


tava indo pesquisar sobre isso agorinha mesmo !

#3 written by EduardoWillians
about 3 years ago

Ótimo post, bem explicado, detalhado bacana mesmo. Vim parar aqui pelo python daily:

http://www.pythonware.com/daily/
Parabéns

É isso ae!

#4 written by Carlos Eduardo Pontual


about 3 years ago

Muito bom o post silveira, gostei mesmo

#5 written by midtoad
about 3 years ago

no exemplo de convertendo do .bmp para .jpg, o ‘file’ me parece errado.

ou seja:
for arquivo in os.listdir(cwd):
if file.endswith(‘.bmp’):
im = Image.open(arquivo)

tería que ser:


for arquivo in os.listdir(cwd):
if arquivo.endswith(‘.bmp’):
im = Image.open(arquivo)

converted by Web2PDFConvert.com
saudações
S

#6 written by Silveira
about 3 years ago

midtoad,
sim estava errado. Eu ajeitei. Obrigado pela dica.

#7 written by Kleber
about 3 years ago

Silveira,
gostei do exemplo fiz e deu certo, mas o que queria msm é mostrar uma imagem na tela,
vcsabe como? O que ferramenta devo utilizar?

vlw

#8 written by Silveira
about 3 years ago

Em Python? Pode usar o Pygame, é o que me vem a cabeça no momento.

#9 written by topinho
about 7 months ago

estava mesmo a procura dessa informação.. foi muito útil para mi


Já agora há uma forma de pegar em todas essas imagens, junta-las e transforma-las numa só
imagem(Life Poster).
Alguém sabe como eu posso fazer isso?

Obrigado

Name (required)
E-mail (required, will not be published)
Website

Submit Comment

Mystique theme by digitalnature | Powered by WordPress


RSS FEEDS TOP

converted by Web2PDFConvert.com