[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: How are CHRP bootinfo icons formatted?



On 6/3/23 3:58 PM, Ben Westover wrote:
I don't think I really did. All I did was guess that the colors are stored in some sort of 3,3,2 8 bit color format since that's what standard CHRP does. My method for converting RGB pixels into 3,3,2 was based on a Stack Overflow answer that I'm not so sure was accurate.

I tried something else; while I'm not quite there yet, I think I'm getting closer. My last palette based on a Stack Overflow answer incremented the red and green by 32, giving a range from 0x00 to 0xE0, and the blue by 64, giving a range from 0x00 to 0xC0. I created a new palette incrementing red and green by 36, giving a range from 0x00 to 0xFC, and blue by 85, which gives the complete range of color from 0x00 to 0xFF. This is much better coverage than before, and the new palette as well as a new script that uses it is attached.

The reason why I think the new palette is closer than the old one is that I no longer need to invert the Debian logo's colors to make it look right. The red is also a lot darker than it was before, going from almost pink to a sort of burgundy. It's still not quite right, though, as more complex images still look completely wrong.

--
Ben Westover
from PIL import Image
from more_itertools import chunked
img = Image.open('image.png')
pixels = []

for i in range(0, 16):
    for j in range(0, 16):
        pixels.append(img.getpixel((j, i)))

bmp1_values = []
for pixel in pixels:
    red = format(round(pixel[0] / 36), 'b').zfill(3)
    green = format(round(pixel[0] / 36), 'b').zfill(3)
    blue = format(round(pixel[0] / 85), 'b').zfill(2)
    bmp1_values.append(format(int(red + green + blue, 2), 'X').zfill(2))

bmp3_values = []
for pixel in pixels:
    if pixel == (0, 0, 0, 0):
        bmp3_values.append("00")
    else:
        bmp3_values.append("FF")

for chunk in chunked(bmp1_values, 16):
    print(''.join(chunk))
print("")

for chunk in chunked(bmp1_values, 16):
    print(''.join(chunk))
print("")

for chunk in chunked(bmp3_values, 16):
    print(''.join(chunk))
.Untitled { color: rgb(0, 0, 0) };
.Untitled { color: rgb(0, 0, 85) };
.Untitled { color: rgb(0, 0, 170) };
.Untitled { color: rgb(0, 0, 255) };
.Untitled { color: rgb(0, 36, 0) };
.Untitled { color: rgb(0, 36, 85) };
.Untitled { color: rgb(0, 36, 170) };
.Untitled { color: rgb(0, 36, 255) };
.Untitled { color: rgb(0, 72, 0) };
.Untitled { color: rgb(0, 72, 85) };
.Untitled { color: rgb(0, 72, 170) };
.Untitled { color: rgb(0, 72, 255) };
.Untitled { color: rgb(0, 108, 0) };
.Untitled { color: rgb(0, 108, 85) };
.Untitled { color: rgb(0, 108, 170) };
.Untitled { color: rgb(0, 108, 255) };
.Untitled { color: rgb(0, 144, 0) };
.Untitled { color: rgb(0, 144, 85) };
.Untitled { color: rgb(0, 144, 170) };
.Untitled { color: rgb(0, 144, 255) };
.Untitled { color: rgb(0, 180, 0) };
.Untitled { color: rgb(0, 180, 85) };
.Untitled { color: rgb(0, 180, 170) };
.Untitled { color: rgb(0, 180, 255) };
.Untitled { color: rgb(0, 216, 0) };
.Untitled { color: rgb(0, 216, 85) };
.Untitled { color: rgb(0, 216, 170) };
.Untitled { color: rgb(0, 216, 255) };
.Untitled { color: rgb(0, 252, 0) };
.Untitled { color: rgb(0, 252, 85) };
.Untitled { color: rgb(0, 252, 170) };
.Untitled { color: rgb(0, 252, 255) };
.Untitled { color: rgb(36, 0, 0) };
.Untitled { color: rgb(36, 0, 85) };
.Untitled { color: rgb(36, 0, 170) };
.Untitled { color: rgb(36, 0, 255) };
.Untitled { color: rgb(36, 36, 0) };
.Untitled { color: rgb(36, 36, 85) };
.Untitled { color: rgb(36, 36, 170) };
.Untitled { color: rgb(36, 36, 255) };
.Untitled { color: rgb(36, 72, 0) };
.Untitled { color: rgb(36, 72, 85) };
.Untitled { color: rgb(36, 72, 170) };
.Untitled { color: rgb(36, 72, 255) };
.Untitled { color: rgb(36, 108, 0) };
.Untitled { color: rgb(36, 108, 85) };
.Untitled { color: rgb(36, 108, 170) };
.Untitled { color: rgb(36, 108, 255) };
.Untitled { color: rgb(36, 144, 0) };
.Untitled { color: rgb(36, 144, 85) };
.Untitled { color: rgb(36, 144, 170) };
.Untitled { color: rgb(36, 144, 255) };
.Untitled { color: rgb(36, 180, 0) };
.Untitled { color: rgb(36, 180, 85) };
.Untitled { color: rgb(36, 180, 170) };
.Untitled { color: rgb(36, 180, 255) };
.Untitled { color: rgb(36, 216, 0) };
.Untitled { color: rgb(36, 216, 85) };
.Untitled { color: rgb(36, 216, 170) };
.Untitled { color: rgb(36, 216, 255) };
.Untitled { color: rgb(36, 252, 0) };
.Untitled { color: rgb(36, 252, 85) };
.Untitled { color: rgb(36, 252, 170) };
.Untitled { color: rgb(36, 252, 255) };
.Untitled { color: rgb(72, 0, 0) };
.Untitled { color: rgb(72, 0, 85) };
.Untitled { color: rgb(72, 0, 170) };
.Untitled { color: rgb(72, 0, 255) };
.Untitled { color: rgb(72, 36, 0) };
.Untitled { color: rgb(72, 36, 85) };
.Untitled { color: rgb(72, 36, 170) };
.Untitled { color: rgb(72, 36, 255) };
.Untitled { color: rgb(72, 72, 0) };
.Untitled { color: rgb(72, 72, 85) };
.Untitled { color: rgb(72, 72, 170) };
.Untitled { color: rgb(72, 72, 255) };
.Untitled { color: rgb(72, 108, 0) };
.Untitled { color: rgb(72, 108, 85) };
.Untitled { color: rgb(72, 108, 170) };
.Untitled { color: rgb(72, 108, 255) };
.Untitled { color: rgb(72, 144, 0) };
.Untitled { color: rgb(72, 144, 85) };
.Untitled { color: rgb(72, 144, 170) };
.Untitled { color: rgb(72, 144, 255) };
.Untitled { color: rgb(72, 180, 0) };
.Untitled { color: rgb(72, 180, 85) };
.Untitled { color: rgb(72, 180, 170) };
.Untitled { color: rgb(72, 180, 255) };
.Untitled { color: rgb(72, 216, 0) };
.Untitled { color: rgb(72, 216, 85) };
.Untitled { color: rgb(72, 216, 170) };
.Untitled { color: rgb(72, 216, 255) };
.Untitled { color: rgb(72, 252, 0) };
.Untitled { color: rgb(72, 252, 85) };
.Untitled { color: rgb(72, 252, 170) };
.Untitled { color: rgb(72, 252, 255) };
.Untitled { color: rgb(108, 0, 0) };
.Untitled { color: rgb(108, 0, 85) };
.Untitled { color: rgb(108, 0, 170) };
.Untitled { color: rgb(108, 0, 255) };
.Untitled { color: rgb(108, 36, 0) };
.Untitled { color: rgb(108, 36, 85) };
.Untitled { color: rgb(108, 36, 170) };
.Untitled { color: rgb(108, 36, 255) };
.Untitled { color: rgb(108, 72, 0) };
.Untitled { color: rgb(108, 72, 85) };
.Untitled { color: rgb(108, 72, 170) };
.Untitled { color: rgb(108, 72, 255) };
.Untitled { color: rgb(108, 108, 0) };
.Untitled { color: rgb(108, 108, 85) };
.Untitled { color: rgb(108, 108, 170) };
.Untitled { color: rgb(108, 108, 255) };
.Untitled { color: rgb(108, 144, 0) };
.Untitled { color: rgb(108, 144, 85) };
.Untitled { color: rgb(108, 144, 170) };
.Untitled { color: rgb(108, 144, 255) };
.Untitled { color: rgb(108, 180, 0) };
.Untitled { color: rgb(108, 180, 85) };
.Untitled { color: rgb(108, 180, 170) };
.Untitled { color: rgb(108, 180, 255) };
.Untitled { color: rgb(108, 216, 0) };
.Untitled { color: rgb(108, 216, 85) };
.Untitled { color: rgb(108, 216, 170) };
.Untitled { color: rgb(108, 216, 255) };
.Untitled { color: rgb(108, 252, 0) };
.Untitled { color: rgb(108, 252, 85) };
.Untitled { color: rgb(108, 252, 170) };
.Untitled { color: rgb(108, 252, 255) };
.Untitled { color: rgb(144, 0, 0) };
.Untitled { color: rgb(144, 0, 85) };
.Untitled { color: rgb(144, 0, 170) };
.Untitled { color: rgb(144, 0, 255) };
.Untitled { color: rgb(144, 36, 0) };
.Untitled { color: rgb(144, 36, 85) };
.Untitled { color: rgb(144, 36, 170) };
.Untitled { color: rgb(144, 36, 255) };
.Untitled { color: rgb(144, 72, 0) };
.Untitled { color: rgb(144, 72, 85) };
.Untitled { color: rgb(144, 72, 170) };
.Untitled { color: rgb(144, 72, 255) };
.Untitled { color: rgb(144, 108, 0) };
.Untitled { color: rgb(144, 108, 85) };
.Untitled { color: rgb(144, 108, 170) };
.Untitled { color: rgb(144, 108, 255) };
.Untitled { color: rgb(144, 144, 0) };
.Untitled { color: rgb(144, 144, 85) };
.Untitled { color: rgb(144, 144, 170) };
.Untitled { color: rgb(144, 144, 255) };
.Untitled { color: rgb(144, 180, 0) };
.Untitled { color: rgb(144, 180, 85) };
.Untitled { color: rgb(144, 180, 170) };
.Untitled { color: rgb(144, 180, 255) };
.Untitled { color: rgb(144, 216, 0) };
.Untitled { color: rgb(144, 216, 85) };
.Untitled { color: rgb(144, 216, 170) };
.Untitled { color: rgb(144, 216, 255) };
.Untitled { color: rgb(144, 252, 0) };
.Untitled { color: rgb(144, 252, 85) };
.Untitled { color: rgb(144, 252, 170) };
.Untitled { color: rgb(144, 252, 255) };
.Untitled { color: rgb(180, 0, 0) };
.Untitled { color: rgb(180, 0, 85) };
.Untitled { color: rgb(180, 0, 170) };
.Untitled { color: rgb(180, 0, 255) };
.Untitled { color: rgb(180, 36, 0) };
.Untitled { color: rgb(180, 36, 85) };
.Untitled { color: rgb(180, 36, 170) };
.Untitled { color: rgb(180, 36, 255) };
.Untitled { color: rgb(180, 72, 0) };
.Untitled { color: rgb(180, 72, 85) };
.Untitled { color: rgb(180, 72, 170) };
.Untitled { color: rgb(180, 72, 255) };
.Untitled { color: rgb(180, 108, 0) };
.Untitled { color: rgb(180, 108, 85) };
.Untitled { color: rgb(180, 108, 170) };
.Untitled { color: rgb(180, 108, 255) };
.Untitled { color: rgb(180, 144, 0) };
.Untitled { color: rgb(180, 144, 85) };
.Untitled { color: rgb(180, 144, 170) };
.Untitled { color: rgb(180, 144, 255) };
.Untitled { color: rgb(180, 180, 0) };
.Untitled { color: rgb(180, 180, 85) };
.Untitled { color: rgb(180, 180, 170) };
.Untitled { color: rgb(180, 180, 255) };
.Untitled { color: rgb(180, 216, 0) };
.Untitled { color: rgb(180, 216, 85) };
.Untitled { color: rgb(180, 216, 170) };
.Untitled { color: rgb(180, 216, 255) };
.Untitled { color: rgb(180, 252, 0) };
.Untitled { color: rgb(180, 252, 85) };
.Untitled { color: rgb(180, 252, 170) };
.Untitled { color: rgb(180, 252, 255) };
.Untitled { color: rgb(216, 0, 0) };
.Untitled { color: rgb(216, 0, 85) };
.Untitled { color: rgb(216, 0, 170) };
.Untitled { color: rgb(216, 0, 255) };
.Untitled { color: rgb(216, 36, 0) };
.Untitled { color: rgb(216, 36, 85) };
.Untitled { color: rgb(216, 36, 170) };
.Untitled { color: rgb(216, 36, 255) };
.Untitled { color: rgb(216, 72, 0) };
.Untitled { color: rgb(216, 72, 85) };
.Untitled { color: rgb(216, 72, 170) };
.Untitled { color: rgb(216, 72, 255) };
.Untitled { color: rgb(216, 108, 0) };
.Untitled { color: rgb(216, 108, 85) };
.Untitled { color: rgb(216, 108, 170) };
.Untitled { color: rgb(216, 108, 255) };
.Untitled { color: rgb(216, 144, 0) };
.Untitled { color: rgb(216, 144, 85) };
.Untitled { color: rgb(216, 144, 170) };
.Untitled { color: rgb(216, 144, 255) };
.Untitled { color: rgb(216, 180, 0) };
.Untitled { color: rgb(216, 180, 85) };
.Untitled { color: rgb(216, 180, 170) };
.Untitled { color: rgb(216, 180, 255) };
.Untitled { color: rgb(216, 216, 0) };
.Untitled { color: rgb(216, 216, 85) };
.Untitled { color: rgb(216, 216, 170) };
.Untitled { color: rgb(216, 216, 255) };
.Untitled { color: rgb(216, 252, 0) };
.Untitled { color: rgb(216, 252, 85) };
.Untitled { color: rgb(216, 252, 170) };
.Untitled { color: rgb(216, 252, 255) };
.Untitled { color: rgb(252, 0, 0) };
.Untitled { color: rgb(252, 0, 85) };
.Untitled { color: rgb(252, 0, 170) };
.Untitled { color: rgb(252, 0, 255) };
.Untitled { color: rgb(252, 36, 0) };
.Untitled { color: rgb(252, 36, 85) };
.Untitled { color: rgb(252, 36, 170) };
.Untitled { color: rgb(252, 36, 255) };
.Untitled { color: rgb(252, 72, 0) };
.Untitled { color: rgb(252, 72, 85) };
.Untitled { color: rgb(252, 72, 170) };
.Untitled { color: rgb(252, 72, 255) };
.Untitled { color: rgb(252, 108, 0) };
.Untitled { color: rgb(252, 108, 85) };
.Untitled { color: rgb(252, 108, 170) };
.Untitled { color: rgb(252, 108, 255) };
.Untitled { color: rgb(252, 144, 0) };
.Untitled { color: rgb(252, 144, 85) };
.Untitled { color: rgb(252, 144, 170) };
.Untitled { color: rgb(252, 144, 255) };
.Untitled { color: rgb(252, 180, 0) };
.Untitled { color: rgb(252, 180, 85) };
.Untitled { color: rgb(252, 180, 170) };
.Untitled { color: rgb(252, 180, 255) };
.Untitled { color: rgb(252, 216, 0) };
.Untitled { color: rgb(252, 216, 85) };
.Untitled { color: rgb(252, 216, 170) };
.Untitled { color: rgb(252, 216, 255) };
.Untitled { color: rgb(252, 252, 0) };
.Untitled { color: rgb(252, 252, 85) };
.Untitled { color: rgb(252, 252, 170) };
.Untitled { color: rgb(252, 252, 255) };

Attachment: Screenshot from 2023-06-04 00-41-04.png
Description: PNG image

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


Reply to: