hackmd.io/@villares/prog-ilustra-e4
pathlib.Path
# para iterar por uma pasta
>>> for p in Path.cwd().iterdir():
print(p)
... lista itens do diretório atual
caminho = Path('image.png')
caminho.absolute().parent # pasta onde está a imagem
caminho.suffix # extensao
caminho.stem # nome sem extensão
caminho.name # nome do arquivo só (sem o resto do caminho)
# dá pra concatenar caminhos com /
novo_na_mesma_pasta = caminho.absolute().parent / 'novo_nome.png'
from pathlib import Path # standard libray
from PIL import Image # Pillow
def setup():
size(800, 400)
caminho_imagem = Path('piscina-praticas.jpg')
nome, extensao = caminho_imagem.stem, caminho_imagem.suffix
print(nome, extensao)
destino = save_thumb(caminho_imagem)
img = load_image(caminho_imagem)
thumb = load_image(destino)
image(img, 0, 0)
image(thumb, 0, 0)
def save_thumb(caminho_arquivo, tamanho_maximo=(200, 200)):
caminho_destino = caminho_arquivo.parent / (caminho_arquivo.stem + '_thumb.png')
try:
im = Image.open(caminho_arquivo)
im.thumbnail(tamanho_maximo, Image.Resampling.LANCZOS)
im.save(caminho_destino, "PNG")
except IOError as erro:
print(erro)
exit_sketch()
return caminho_destino
Baseado neste exemplo
from pathlib import Path
def setup():
size(500, 500)
caminho_pasta = Path('imagens')
for caminho_imagem in lista_imagens(caminho_pasta):
print(caminho_imagem)
def lista_imagens(caminho_pasta):
extensoes_validas = ('.jpg', '.png', '.jpeg', '.gif', '.tif', '.tga')
lista_caminhos = []
for caminho_imagem in caminho_pasta.iterdir():
if caminho_imagem.is_file() and caminho_imagem.suffix.lower() in extensoes_validas:
lista_caminhos.append(caminho_imagem)
return lista_caminhos
from pathlib import Path
def setup():
size(500, 500)
caminho_pasta = Path('imagens')
for caminho_imagem in lista_imagens(caminho_pasta, recursiva=True):
print(caminho_imagem)
def lista_imagens(caminho, recursiva=True):
extensoes_validas = ('.jpg', '.jpeg', '.png', '.gif')
lista_caminhos = []
if caminho.is_dir():
for path_item in caminho.iterdir():
if not recursiva and path_item.is_dir():
continue
lista_caminhos.extend(lista_imagens(path_item))
elif caminho.is_file() and caminho.suffix in extensoes_validas:
return [caminho]
else:
return []
return lista_caminhos
from pathlib import Path
imagens = [] # lista vazia que vai receber tuplas (nome-string, objetos-Py5Image)
def setup():
size(500, 500)
def draw():
pass
def key_pressed():
if key == 'o':
select_folder("Selecione uma pasta", carregar_imagens)
if key == ' ':
imagens[:] = [] # esvazia a lista de imagens
def carregar_imagens(caminho_pasta):
if caminho_pasta == None:
print("Seleção cancelada.")
else:
print("Pasta selecionada: " + caminho_pasta.name)
for caminho_imagem in lista_imagens(caminho_pasta):
img = load_image(caminho_imagem)
print(f'imagem {caminho_imagem.name} carregada.')
imagens.append((caminho_imagem.name, img))
print(f'Número de imagens: {len(imagens)}')
def lista_imagens(caminho_pasta):
extensoes_validas = ('.jpg', '.png', '.jpeg', '.gif', '.tif', '.tga')
lista_caminhos = []
for caminho_imagem in caminho_pasta.iterdir():
if caminho_imagem.is_file() and caminho_imagem.suffix.lower() in extensoes_validas:
lista_caminhos.append(caminho_imagem)
return lista_caminhos
from pathlib import Path
imagens = []
def setup():
size(1000, 500)
def draw():
x = 0
for img in imagens:
image(img, x, 0)
x = xo + 100
def key_pressed():
if key == 'o':
select_folder('Selecione uma pasta com imagens', adiciona_imagens)
def adiciona_imagens(caminho_pasta):
if caminho_pasta is None:
print('Operação cancelada.')
else:
print(f'vamos olhar {caminho_pasta}')
for caminho_imagem in lista_imagens(caminho_pasta, recursiva=True):
try:
img = load_image(caminho_imagem)
imagens.append(img)
print(caminho_imagem.name)
except Exception as erro:
print(erro)
def lista_imagens(caminho, recursiva=True):
extensoes_validas = ('.jpg', '.jpeg', '.png', '.gif')
lista_caminhos = []
if caminho.is_dir():
for path_item in caminho.iterdir():
if not recursiva and path_item.is_dir():
continue
lista_caminhos.extend(lista_imagens(path_item))
elif caminho.is_file() and caminho.suffix in extensoes_validas:
return [caminho]
else:
return []
return lista_caminhos
from pathlib import Path
imagens = []
def setup():
size(1000, 500)
no_smooth()
def draw():
#background(200)
y = 100
fill(0)
for img in imagens:
text(img, 50, y)
y += 20
def key_pressed():
if key == 'o':
select_folder('Selecione uma pasta com imagens', processa_imagens)
def processa_imagens(caminho_pasta):
if caminho_pasta is None:
print('Operação cancelada.')
else:
print(f'vamos processar {caminho_pasta}')
pasta_saida = caminho_pasta.parent / 'imagens_processadas'
for caminho_imagem in lista_imagens(caminho_pasta, recursiva=True):
try:
img = load_image(caminho_imagem)
pasta_imagem = caminho_imagem.parent
caminho_saida = pasta_saida / pasta_imagem.relative_to(caminho_pasta)
caminho_saida.mkdir(parents=True, exist_ok=True)
apply_threshold_and_save(
img, 128, caminho_saida / caminho_imagem.name
)
imagens.append(caminho_imagem.name)
print(caminho_saida)
except Exception as erro:
print(erro)
def lista_imagens(caminho, recursiva=True):
extensoes_validas = ('.jpg', '.jpeg', '.png', '.gif')
lista_caminhos = []
if caminho.is_dir():
for path_item in caminho.iterdir():
if not recursiva and path_item.is_dir():
continue
lista_caminhos.extend(lista_imagens(path_item))
elif caminho.is_file() and caminho.suffix in extensoes_validas:
return [caminho]
else:
return []
return lista_caminhos
def apply_threshold_and_save(img, threshold, caminho_saida):
img.load_np_pixels()
img_array = img.np_pixels
new_array = np.where(img_array > threshold, 255, 0)
img.set_np_pixels(new_array, bands='ARGB')
img.save(caminho_saida)
#image(img, 0, 0) # ver na tela o último resultado
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up