47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
import os
|
||
from PIL import Image
|
||
|
||
# 🟢 CONFIGURA AQUI
|
||
PASTA_IMAGENS = r"images/convert" # troque pelo caminho da pasta
|
||
|
||
QUALIDADE_JPEG = 85 # 80–90 costuma ser um bom equilíbrio
|
||
|
||
|
||
def converter_png_para_jpeg(pasta):
|
||
for nome_arquivo in os.listdir(pasta):
|
||
if not nome_arquivo.lower().endswith(".png"):
|
||
continue
|
||
|
||
caminho_png = os.path.join(pasta, nome_arquivo)
|
||
nome_base, _ = os.path.splitext(nome_arquivo)
|
||
caminho_jpeg = os.path.join(pasta, nome_base + ".jpg")
|
||
|
||
print(f"Convertendo: {caminho_png} -> {caminho_jpeg}")
|
||
|
||
with Image.open(caminho_png) as img:
|
||
# Garante que está em RGB (JPEG não suporta transparência)
|
||
if img.mode in ("RGBA", "LA"):
|
||
# Fundo branco; mude para (0, 0, 0) se quiser fundo preto
|
||
fundo = Image.new("RGB", img.size, (255, 255, 255))
|
||
fundo.paste(img, mask=img.split()[-1]) # usa o canal alpha como máscara
|
||
img = fundo
|
||
else:
|
||
img = img.convert("RGB")
|
||
|
||
# Salva como JPEG
|
||
img.save(
|
||
caminho_jpeg,
|
||
"JPEG",
|
||
quality=QUALIDADE_JPEG,
|
||
optimize=True,
|
||
progressive=True,
|
||
)
|
||
|
||
# ⚠️ Se quiser apagar o PNG depois de conferir que ficou ok, descomente:
|
||
# os.remove(caminho_png)
|
||
|
||
|
||
if __name__ == "__main__":
|
||
converter_png_para_jpeg(PASTA_IMAGENS)
|
||
print("Finalizado!")
|