Como usar imagens externas
Acessando um arquivo com loadImage()
Podemos carregar (load) na memória imagens digitais a partir de arquivos externos nos formatos PNG, JPG, GIF, TIF entre outros. Para isso usamos a função loadImage()
, mas é preciso indicar onde está o arquivo (o chamado ‘caminho completo’ do arquivo), ou que ele esteja na pasta /data/
dentro da pasta do seu sketch (programa).
sketch_2020_04a (pasta/folder do sketch)
L sketch_2020_04a.pyde (arquivo com o código)
L data (pasta/folder)
L imagem.jpg (imagem)
Note que a operação de carregar o arquivo de imagem é relativamente demorada e nunca deve ser executada dentro do laço draw()
. Em geral só precisamos carregar uma vez a imagem e fazemos isso no setup()
. Também é comum criarmos uma variável global que faz referência à imagem, neste exemplo a variável img
:
def setup():
size(400, 400)
global img
img = loadImage("image.jpg") # arquivo JPG na pasta /data/
def draw():
image(img, 0, 0) # é possível forçar um tamanho com image(imagem, 0, 0, 100, 100)
# img.width e img.height são as dimensões da imagem original
# podemos mostrar uma imagem com metade da sua largura e altura originais assim:
# image(img, 0, 0, img.width / 2, img.height / 2)
Se a imagem tiver exatamente a mesma dimensão da área de desenho ela pode ser usada em background()
.
def setup():
size(600, 400)
global imagem_fundo
imagem_fundo = loadImage("fundo.png") # fundo tem que ter exatamente 600x400 pixels
def draw():
background(imagem_fundo)
# outros desenhos sobre o fundo aqui
Pode ser conveniente simplesmente usar a função image()
como visto anteriormente, para desenhar a imagem na área de desenho logo no começo do draw()
, caso suas dimensões não sejam iguais a área de desenho.
def setup():
size(600, 400)
global imagem_fundo
imagem_fundo = loadImage("fundo.png")
def draw():
image(imagem_fundo, 0, 0, width, height) # vai forçar/distorcer o tamanho na imagem
# ou usamos image(imagem_fundo, 0, 0) mas pode faltar ou sobrar imagem em relação à área.
# outros desenhos sobre o fundo aqui
Acessando a cor de um pixel da tela ou de uma imagem
Use get()
para os pixels visíveis na tela ou o método .get()
para os pixels em uma imagem PImage
. Como no exemplo abaixo:
def setup():
size(500,500)
global imagem
imagem = loadImage('arquivo.png') # carregando uma imagem da pasta /data/
def draw():
iw, ih = imagem.width, imagem.height
print(iw, ih)
cor = imagem.get(mouseX, mouseY) # cor do pixel sob o mouse
fill(cor)
noStroke()
image(imagem, 0, 0)
circle(mouseX, mouseY, 30)
Copiando uma imagem com copy()
Podemos copiar imagens digitais previamente carregadas na memória para uma região específica da janela de exibição. Se a região a ser copiada e a região a ser colada a imagem tiverem tamanhos diferentes, então o conteúdo será automaticamente redimensionado na região de destino.
Os parâmetros aceitos pela função copy()
são:
src
: imagem fonte (Opcional, caso não seja especificada, se refere à própria tela de desenho)sx
: coordenada X do ponto superior esquerdo da região a ser copiada da imagem fontesy
: coordenada Y do ponto superior esquerdo da região a ser copiada da imagem fontesw
: largura da região a ser copiada da imagem fontesh
: altura da região a ser copiada da imagem fontedx
: coordenada X do ponto superior esquerdo da região de destino na janelady
: coordenada Y do ponto superior esquerdo da região de destino na janeladw
: largura da região de destino na janelady
: altura da região de destino na janela
Use copy()
para copiar pixels de uma imagem PImage
, ou de uma região da tela, para outra região da tela.
def setup():
size(400,200)
global imagem
imagem = loadImage('sunflower.png')
def draw():
image(imagem, 0, 0)
copy(0, 0, 200, 200, 200, 0, 200, 200)
def setup():
size(200,200)
global imagem, imagem2
imagem = loadImage('sunflower.png')
imagem2 = loadImage('sunflower.png')
def draw():
image(imagem, 0, 0)
copy(imagem2, 0, 0, 200, 200, 150, 150, 50, 50)
Assuntos relacionados
- Estrutura de pixels das imagens em Pixels e imagens
- Exportando imagens