gimpnumworks.py

Created by schraf

Created on July 23, 2023

5.17 KB

Affiche une photo sur la calculatrice

But : Afficher une image quelconque (80*60 pixels avec 16 couleurs) sur la calculatrice

Attention : Depuis la dernière mise à jour proposée par Numwroks cette version peut poser des problèmes de mémoire, utilisez plutôt la version 2

Explications en vidéo

  • Lancez l’éditeur d’image gratuit Gimp et ouvrir une image quelconque
  • Utilisez l’outil de sélection rectangulaire et dans les options de cet outil choisir “Fixé proportions 320:240” pour sélectionner avec une forme semblable à celle de la calculatrice (vous pouvez aussi choisir le format 4:3). Comme me l’a fait remarquer un internaute, le format de l’écran est bien 4:3 mais le bandeau orange fait que dans la réalité on ne peut dessiner que sur une zone de 320x222 pixels. Si bien que dans vous pouvez choisir 320:220 ou 320:224 comme proportions dans Gimp et dans le programme principal vous remplacez le 60 par 55 (4x55=220) ou 56 (4x56=224).
  • Sélectionnez la zone à conserver puis Image - Rogner selon la sélection
  • Ouvrir la console Python de Gimp par Filtres - Python-Fu - Console
  • Copiez le code ci-dessous et le coller dans la console
def nw():
    lett="0123456789ABCDEF"
    img=gimp.image_list()[0]
    pdb.gimp_image_scale(img, 80, 60)
    drw = pdb.gimp_image_active_drawable(img)
    if not(pdb.gimp_drawable_is_indexed(drw)):
      pdb.gimp_convert_indexed(img, 0, 0, 16, 0, 1, 0)
    im=""
    pal=[]
    for i in range(4800):
      v=list(pdb.gimp_image_pick_color(img,drw,i%80,i//80,1,0,0))[:-1]
      if v not in pal: pal.append(v)
      im+=lett[pal.index(v)]
    print "pal="+str(pal)
    print "im=\""+im+"\""


  • Faire Entrée - Entrée pour obtenir >> à l’affichage et pas ...
  • Tapez


from kandinsky import *

pal=[[10, 9, 19], [145, 134, 125], [235, 213, 204], [227, 195, 168], [194, 162, 136], [127, 98, 80], [84, 87, 92], [27, 70, 102], [23, 50, 70], [25, 29, 35], [62, 46, 38], [178, 166, 158], [160, 129, 105], [91, 68, 55], [196, 98, 81], [170, 80, 66]]
im="000001222222222222222222222222333334456777777899888888877888888777778888887889990000AB22222222222222222222222223333334C6677777899888888878878909777788888888788800006B222222222222222222222222222333334C16887778990999898888789987777887778777780000D22233222222222222222223222333333344C5D97888890090999988879098887777778777770000D42333333222222222222223322333333344411D8898889900009998988099988887777777770000AC34444B32222222333333333333333333344415DA88878990009998899998998898877877770000A5C4B34432222222333344444443333333344411DDA88888900000998898989098999878777700009A5B22BBB3222222344444444434333333334B155DAA8888889999988888998909789878877800009AD5C5111B22222344444B4444433333333344C55DDAA888788809988789900999889888877800000A5B21AA6422222B444444CCC4433333333344C5DDDAAA99978999988988890099998888887800000AB22110A52222244C444CC422234444333444C5DDDAAAA9987888888898999098989878788800000A222AA0A53222344CC4CC323333B4CC44444CC5DDDDAAAA987888888988987909098888877800000DB221AA65322234CCCCC4BB3BB155555C444C5DDDDDDAAAA988888889989978009988877777000001322B111C22224CCCC444422221AAAD555CCC5DDDDDDDAAAA887888889089878009888877770000AB3333333222224CCCC44C32222BA0AADDD5C55DDDDDDDDAAAA87888888909988998888887880000632444344322234CCCC434322226A0ADADDD5555DDDDDDDAAAA98877889999988899888898880000522333343222234CCCC43332222DAADDAADD555DDDDDDDDDAAAA9877799909998988898888880000122223332222234CCCC433332221D66ADDD55555555DDDDDDAAAA987789999989888899988880000122222322222244CCCC333333333B111DD55CCC55555DDDDDDAAAA98888999988888899888880009122222222222344CCC43333333344CC5D55C4444CCC5DDDDDADDAAA8888888999888888889980009B22222222222344CCC4333333334CC5555C4333444C5DDDDDDDADAAA988998999988888988980009B22222222222344CCCC43333333344CCC44333444CC5DDDDDDDDDAAAA8889889098888798889000AB222222222234CCCCCC3333333333444433333444CC55DDDDDDDDDAAAA8788888999988988890009B222222222244CCCCCC4333333333333333333344CC5DDDDDDDDDADAAAA878877999999999880009B222222222344CCCCCC433333232222233333344CC55DDDDDDDDDDDAAAAA87877789999099980009B222222222344CCCCCC433333222232233333444CC55DDDDDDDDDDAAAAAA98877778999909090009122222222344CC555CC433333333222233333444C55DDDDDDDDDDDAAAAAAAA987777899999090000122222222344C55555C43333333323333333444CC55DDDDDDDDDDDDAAAAAAAA988878999900900005222222234CCC55555C43333333333333334444CC5DDDDDDDDDDDDDDAAAAAAA098777899900000005222222234CC55555554333333333333333344CC5DDDDDDDDDDDDDDDAAAAAAAAA988889000000000A32222234CCC5555555C33333333333333444CCC5DDDDDDDDDDDDDDDDAAAA0AAAA9889000000000094222224C555555555D543333333333333444CC55DDDDDDDDDDDDDDDDAAAAAAAAAA99900000000000B22223C5555555555D5C333333333333444CCC55DDDDDDDDDDDDDDDAAAAAADDAAA9900000000000012222245DDDDD55DDDDC33333333333444CCC55DDDDDDDDDDDDDDDDAAAADDDDAAA90000000000000522222245AAADDDD5DD54333333333344CCCC55DDDDDDDDDDDDDDDDAAADDDDAAAA000000000000006322222225DDDDDDDDDC33333333334444CCC55DDDDDDDDDDDDDDDDDDDDDDDAAA900000000000000AB22222223C55555CCC443333333344444CC555DDDDDDDDDDDDDDDDDDDADDDAA900000000000000001222222224CCCCC44443333333334444CCC55DDDDDDDDDDDDDDDDAADDDDDAA9000000000000000001222222223CCC4444443333333344444CCC555DDDDDDDDDDDDDDAAADDDDAA0000000000000000000A322232224CC4444444333333334444CCCC555DDDDDDDDDDDDDDAAAAAAAA000000000000000000000B22443334CCC444444433333434444CCC55555DDD5DDDDDDDDDAAAAAAA00000000000000000000001224EC4CCC4CCC44444433444444CCCCC5555555555DDDDDDDDAAAAAAA00000000000000000000009224FFFFF5CCCCCC444443444444CCC55555555555555DDDDDDAAAAAAA00000000000000000000000B224FFFFFFFF5CCCCCC44444444CCC555555555555555DDDDDAAAAAAAA00000000000000000000006224EFFFCCCFFFFF5CCC444444CCCC5555555555555555DDDDDAAADAAA90000000000000000000009B24EEFFFECC5FFFFFEC44444CCCCC55555555555555555DDDDDDDDDAA9900000000000000000000012344EEEEEEFFFFFFC444444CCCC555555555555555555DDDDDD616AAA9000000000000000000000AB3432234EEEFFFF44434444CCCCCC5555555555555555DDDDDDBB6D6A9000000000000000000000912443323EEEFFFCC4444444CCC55C5555555555555555DDDDD52216AA90000000000000000000000D224444CFFFFFFCC4444444CCC5C555555555CC555555DDADD522B6AA90000000000000000000000A32244CFFFFFF5CCC444444CCCCC5555555CCCC55555DDADDD5BB16AA999000000000000000000009C2222B4C55555CCC44444CCCCC5CCC555CCCCCCC55DDADDDDDDD6AAAA89000000000000000000000522222234CCCCCCCC444CC1CCCCCCC5CCCCCCCCC5DDDDDDDDDDD6666669000000000000000000000D32222233BBCCCCCC444CC11CCCCCCCCCCCCCC55DADDDDDDDDD6B1116A00009996666000000000009422223333444CCCCCCCCC11CCCCCCCCCCCCC55DDDDDDDDDDDD61116AA09666611111000000000000532223333444CCCCCCCCCC1CCCCCCCCCCC55DDDDDDDDDDDDDDDDDAAA661BB11B1B11000000000000A43333333444CCCCCCCCCCCCCCCCCCCC55555DDDDDDDDDDDDDDAAD661BBBBBBBBBBB0000000000000A43333334B11CCCCCCCCCC5CCCCCC55555555DDDDDDDDDDDDD61BBBBBBBBBBBBBBB00000000000000A1B33334411CC5CCCCCC55C555555555555555555DDDDD61BB2222222222BBBBBB0000000000000000A1B34BB111C555555555DDDDD55555555555555DD51B22222222222222BBBBB1"

def rect(x,y,c):
  for i in range(16):
    set_pixel(4*x+i%4,4*y+i//4,c)

def dess():
  for i in range(80*60):
    c = pal[int("0x"+im[i])]
    rect(i%80,i//80,color(c[0],c[1],c[2]))

dess()