import os
import sys

def calcular_taxa_compressao(caminho_original, caminho_comprimido, total_pixeis):

    tamanho_orig = os.path.getsize(caminho_original)
    tamanho_comp = os.path.getsize(caminho_comprimido)
    
    poupanca = (1 - (tamanho_comp / tamanho_orig)) * 100
    
    bpp = (tamanho_comp * 8) / total_pixeis
    
    return poupanca, bpp, tamanho_orig, tamanho_comp

def clean_image_data(image_data):
    
    clean_text = ""

    for line in image_data:
        line = line.strip()
        line = line.replace(" ", "")
        if not line or line.startswith('#'):
            continue
        clean_text += line

    return clean_text

with open(sys.argv[1], "r") as ficheiro:
    lines = ficheiro.readlines()
    image_data = clean_image_data(lines[2:])

    largura, altura = lines[1].split(" ")

    total_pixeis = int(largura) * int(altura)
    p, b, t_o, t_c = calcular_taxa_compressao(sys.argv[1], sys.argv[1] + "_compressed", len(image_data))

print(f"Tamanho Original: {t_o} bytes")
print(f"Tamanho Comprimido: {t_c} bytes")
print(f"Redução: {p:.2f}%")
print(f"Rácio: {b:.4f} bits/pixel")