photov2.py

Created by schraf

Created on July 30, 2021

3.02 KB

Vous pouvez tester le script dans l’émulateur en tapant
>> dess()

Version améliorée du script gimpnumworks.py dans le sens où l’on compresse les données de l’image.
Par exemple im="A7B3CD3" signifie 7 fois le caractère “A”, 3 fois le “B”, 1 fois le “C” et 3 fois le “D” ce qui est plus court en mémoire que im="AAAAAAABBBCDDD"


def nw():
    lett="ABCDEFGHIJKLMNOP"
    img=gimp.image_list()[0]
    pdb.gimp_image_scale(img, 80, 55)
    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=[]
    c=0
    for i in range(4400):
      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)
      cour = pal.index(v)  
      if i==0 : prec = cour      
      if prec != cour and i>0:
        im+=lett[prec]
        if c>1: im+=str(c)
        c=1
        prec = cour
      else:
        c+=1
    print "pal="+str(pal)    
    print "im=\""+im+"\""


from kandinsky import *

pal=[[145, 27, 20], [47, 15, 14], [6, 4, 1], [31, 10, 10], [77, 20, 18], [107, 17, 16], [138, 47, 47], [192, 126, 132], [155, 146, 140], [169, 136, 77], [216, 181, 132], [239, 215, 191], [58, 41, 39], [116, 87, 44], [212, 219, 229], [84, 77, 83]]
im="ABC7D3BEB2DCDCDBC4BF2BDCD2C8GHIJ2K6L2ME9BN4J2KL3KG2EA2EC7D3BEB2DCDCDBC4BE2D2CD2C7GHIJ2K6L2NE10N3J2K2L3KGAGA3EC7D3BE2BDCDCDBC4BE2DC10GHIJ2K2L6NE3F4E2N3J3K2L3KFAGFA3EC8D2BE2BDCDCDBC4BEBDC9HGIJ2KL7NE2F6EJNJ3K3L3KGFGEFA3EC8D3E2BDCDCDBC4DBDC8DH2IJ2KL7KEBEF5GNJ4K2L4JF2GMNFA3EC8D3E2BDCDCD2C4DBDC7DH2INJ2KL7KJ10KJK3L4JEFGN3FA3EC10DE2BDCDC2DC4D2C7BHGIN2JK2L8K14L4NEFGJN3FA2F2C10DBEBDC4DC4D2C6EHGI2N2JKL9K7JK5L4NEFGJ3N2FA2FEC11BEBC17EHGI2N2JK3L7K7J2K4L4NEFGCNJ3NFA2FEC11BEDC16EHGHIN2J2K3L7K6J2K4L4NEFGBCNJ4FA2FEC11DEDC15EHGHIN3J2K4L4K6J3K4L4NEFGEBCMJ4NA2FBC11DBDC14FG2HIN3J4K11J4K3L4INEFGBEBCMJ4NFAFBC12BDC13GHGHLN3J6K8J5K4L3INEFGB2E2C2NJ3NFAFDC12D2C12IH2ILN3J6K5J8K4L3KJGFGE2BE2DCNJ3NEAFDC12DC12IH2OLIN2J6K3J10K4L3J2NFGBE2BE2DCMJ3NEAFDC12DC11PH2OL2INJ5K2J13K3LIN2JNFGDE3BE2BC2J3NBF2DC12DC10PH2OIPOI3J18KI2PIP2JNG2FDBE2BE2BC2NJ2NBF2DC22PH2LIPO4I4J12I4O3IPN2GFA2B2E2BE2BC2NJ2NDEFDC21MI2OIPIO6IP2N7P2IO7PIJN2GFA2EBE6C2MNJNMBEDC20DHIO2I4O6IN7IO6I4KJN2GF2A2EDBE5C2MN3MBEDC20HIO2LJNI7J2K4J3I7KL2J2NG2DEFA2FDBE5DC2N2MCDEBC19MHO2LJN2J18K4L2KJ2NGBC2BF2AFDBE5DC2MNMCDB2C18DHO2LKN2J18K3L3J2N2GDC3DEF2AD2E3BEDC2MNMC2DBC17DHILOLN3J18K2L2KJN2G2DC5E2FABCBE2BEDC3M2C2DBC17HIO2LN4J17K2LKJN3AGDC6BE2FBCBE2B2DC3MDC3DC16H2IL2KN4J16K4N3FG2DC7DEBEBCDE2DBDC3MC4DC15PHI2L2N4J16K3N4FG2DC9B2EBD2BEBD2C3DC19MHOPILN5J18N3EFG2BC10DB3DCBEBD2C22MHOIPIKNMN3J10N2J4NMNBFG2E2C12BDBDCDB2DC22DHO2PNINM2N2J9N4J2NM3BFAGE2C13D4CDB2DC22H2OI2PIM2N3J8N4JN2M2DEFAGE2C14D2CDC2DBDC21PHO2MIPNM2N3J4N9M2CBEFAFE2C16DCDC2DBDC18BGH2IOP2IPM3N3J3N9M2CBEF2E3MC16DC5BDC15EG3MG2HIDON2M2N3J3N8M2D2BEFE2B2M2C22BDC11DBG3BD2BEGHMI2N2MN4JN8M3CB2E2B3ECDMDC21D2C9BGPMD6BEG2ILINMN10M6D3B2M3EC3MDC22DC6BEPM3CDBD3B2FGPOLIM3N6M8D5PIP2C4D2C22DC4BM3P3MCBD3B2EFI2LID6M2D3C2D2M3D3MIPI2C6DC22DCDEPM2P4MCBD4B2MLIP3N2IN9DCM2DCDMP5C8DC21BGMP7MD5CB2MK2P2KJ8N4CM2CD3PM2P3C29BFMPMP6M2DBD4B2NJKJ10N3MC6P2MP4C28DFEMPMPM3PIM2D4C2DB2N4J8N3DC5MPMP4MC28BFMPMPMB2PI2M2D4C3DBM2N13C5MPMPMBMP2C28E2MP2ME3P3M2D3C5DB2MEFA5F3EBC5P4E3BPC26DBEBMP2ME3P3M2D2C6MB3E2A6F2EDC4P4E4MPC24B2EFEMP3BE2MP3MB2C5DCMDB4EA4GAEBDC3MPMPME3BM2C21ME2G3FEMP3E6FGBDC4MP2MCDB2DB2EB4D2C2M2EM3E4M3C18DBEG6EMP2MBEF2G2F2EC6MP3M3D2C9M2DEG2E5BM3C16EG2EGAG2EAFMPMEFGE7BDB5MP7M11BEB2E2FG2E2BM2C14BG3EG2AGBEAMPE3B2EFE5B2E7MP10ME6BE2BEFEF2GFEMC12DEGFE2GE3DCF2ME5FE7B2E6F3EP2EFE9B2E3B2F6EFC11BF5DBE3DBFE4F3E8BE9F2BEF4E6BE6B2F4E3C9DEF2E3FDBE3CE5F2E2F2E6BE8F2E2F5EFE12BEFE5C8DF3EF2E2B2E2BCE25F2E2F6E3BE11BE6C8F7E3DE3DBE31F3E14B4E4C7BAFGAF4E2B2E2DEFE11BE19F3E18BE2C7G3A3F3E3BE3F2E11B2E42C6DGHA4F5EBE2F2E12B2E41BC6MILHA3F5EB2F3E12B2E42C6ML2H2A2F5E3F2E13B"

def dess():
  r = 0
  i=0
  while r<len(im):
   s = im[r]
   n=""
   r+=1
   while r<len(im) and "9">=im[r] >="0":
    n+=im[r]
    r+=1
   nb = 1 if n=="" else int(n)  
   c = pal[ord(s)-65]
   for j in range(nb):
    fill_rect(4*(i%80),4*(i//80),4,4,(c[0],c[1],c[2]))
    i+=1