How do i make it so that my aco file of 184 colors works and converts the pic with only 10 selected colors that are a close match

I’m new to python and just uses sources online to build my code so please bear with me if i dont understand something you are trying to explain to me. so: The output is black jpeg for some reason. is use the Pillow colour package. for my project. My first original code using Python 3.9.10

from PIL import Image
from struct import unpack

def read_aco_file(filepath):
    with open(filepath, "rb") as f:
        # Lees de eerste 4 bytes om te controleren op de juiste versie
        version = unpack(">H", f.read(2))[0]
        if version != 1:
            raise ValueError("Ongeldige ACO-versie")

        # Lees het aantal kleuren
        num_colors = unpack(">H", f.read(2))[0]

        # Lees alle kleuren
        colors = []
        for i in range(num_colors):
            # Lees de kleurwaarden
            r, g, b = unpack(">HHH", f.read(6))
            # Voeg de kleur toe aan de lijst
            colors.append((r, g, b))

    return colors

def find_closest_colors(base_color, all_colors, num_colors=10):
    # Bereken de Euclidische afstand tussen de base_color en alle kleuren in all_colors
    distances = []
    for color in all_colors:
        distance = ((color[0] - base_color[0])**2 + (color[1] - base_color[1])**2 + (color[2] - base_color[2])**2)**0.5
        distances.append(distance)

    # Sorteer de kleuren op basis van hun afstand tot de base_color en selecteer de num_colors dichtstbijzijnde kleuren
    sorted_colors = [x for _, x in sorted(zip(distances, all_colors))]
    closest_colors = sorted_colors[:num_colors]

    return closest_colors

# Geef het pad naar het aco-bestand op
aco_path = "Test.aco"
# Lees het bestand
all_colors = read_aco_file(aco_path)

# Geef het pad naar de afbeelding op
image_path = "iron golem2.jpg"
# Open de afbeelding
image = Image.open(image_path)

# Converteer de afbeelding naar RGB-indeling
image_rgb = image.convert("RGB")

# Bereken het totale aantal pixels in de afbeelding
total_pixels = image_rgb.width * image_rgb.height
# Houd bij hoeveel pixels er zijn verwerkt
processed_pixels = 0

# Loop over elke pixel in de afbeelding, vind de 10 dichtstbijzijnde kleuren en kies er een uit
selected_colors = []
for y in range(image_rgb.height):
    for x in range(image_rgb.width):
        # Vind de 10 dichtstbijzijnde kleuren
        base_color = image_rgb.getpixel((x, y))
        closest_colors = find_closest_colors(base_color, all_colors, num_colors=10)
        # Kies de eerste kleur uit de lijst van de 10 dichtstbijzijnde kleuren
        selected_color = closest_colors[0]
        selected_colors.append(selected_color)

        # Houd bij hoeveel pixels er zijn verwerkt en bereken het percentage voltooiing
        processed_pixels += 1
        progress_percent = round(processed_pixels / total_pixels * 100, 2)
        print(f"{progress_percent}% voltooid", end="<\r")

        # Maak een nieuwe afbeelding met de geconverteerde pixels
        image_converted = Image.new("RGB", image_rgb.size)
        image_converted.putdata(selected_colors)

        # Geef het pad naar het bestand op waarin je de afbeelding wilt opslaan
        output_path = "converted_image.jpg"

        # Sla de afbeelding op als JPEG-bestand
        image_converted.save(output_path, format="JPEG")

Then i changed it with three distinct values but still black image output.

here latest code.

from PIL import Image
from struct import unpack

def read_aco_file(filepath):
    with open(filepath, "rb") as f:
        # Lees de eerste 4 bytes om te controleren op de juiste versie
        version = unpack(">H", f.read(2))[0]
        if version != 1:
            raise ValueError("Ongeldige ACO-versie")

        # Lees het aantal kleuren
        num_colors = unpack(">H", f.read(2))[0]

        # Lees alle kleuren
        colors = []
        for i in range(num_colors):
            # Lees de kleurwaarden
            r, g, b = unpack(">HHH", f.read(6))
            # Voeg de kleur toe aan de lijst
            colors.append((r, g, b))

    return colors

def find_closest_colors(base_color, all_colors, num_colors=10):
    # Bereken de Euclidische afstand tussen de base_color en alle kleuren in all_colors
    distances = []
    for color in all_colors:
        distance_r = color[0] - base_color[0]
        distance_g = color[1] - base_color[1]
        distance_b = color[2] - base_color[2]
        distances.append((distance_r, distance_g, distance_b))

    # Sorteer de kleuren op basis van hun afstand tot de base_color en selecteer de num_colors dichtstbijzijnde kleuren
    sorted_colors = [x for _, x in sorted(zip(distances, all_colors), key=lambda pair: sum([abs(x) for x in pair[0]]))]
    closest_colors = sorted_colors[:num_colors]

    return closest_colors

# Geef het pad naar het aco-bestand op
aco_path = "Test.aco"
# Lees het bestand
all_colors = read_aco_file(aco_path)

# Geef het pad naar de afbeelding op
image_path = "iron golem2.jpg"
# Open de afbeelding
image = Image.open(image_path)

# Converteer de afbeelding naar RGB-indeling
image_rgb = image.convert("RGB")

# Bereken het totale aantal pixels in de afbeelding
total_pixels = image_rgb.width * image_rgb.height
# Houd bij hoeveel pixels er zijn verwerkt
processed_pixels = 0

# Loop over elke pixel in de afbeelding, vind de 10 dichtstbijzijnde kleuren en kies er een uit
selected_colors = []
for y in range(image_rgb.height):
    for x in range(image_rgb.width):
        # Vind de 10 dichtstbijzijnde kleuren
        base_color = image_rgb.getpixel((x, y))
        closest_colors = find_closest_colors(base_color, all_colors, num_colors=10)
        # Kies de eerste kleur uit de lijst van de 10 dichtstbijzijnde kleuren
        selected_color = closest_colors[0]
        selected_colors.append(selected_color)

        # Houd bij hoeveel pixels er zijn verwerkt en bereken het percentage voltooiing
        processed_pixels += 1
        progress_percent = round(processed_pixels / total_pixels * 100, 2)
        print(f"{progress_percent}% voltooid", end="<\r")

    # Maak een nieuwe afbeelding met de geconverteerde pixels
    image_converted = Image.new("RGB", image_rgb.size)
    image_converted.putdata(selected_colors)

    # Geef het pad naar het bestand op waarin je de afbeelding wilt opslaan
    output_path = "converted_image.jpg"

    # Sla de afbeelding op als JPEG-bestand
    image_converted.save(output_path, format="JPEG")

If somebody could help me and explain it clearly what is happening and what i do wrong i would aprecciate it.