Python 3, 5797.125628604383
The compression program first truncates the bits of the image, and then converts base 2 to base 36.
The decode program does that in reverse, and re-sizes the image.
from PIL.Image import new
K=bin(int('29zoubbejrojv5nc2c09w8008mmc93di8nsq75g5ep83xtelg14ua2jvhm6ez5gry7isq1g82qvqezkbvl0ibovc6kltldjgklqeg7g5oyfefamfrvei712jnrd8a2ften12xme2bfh654a6r8kfe5xtckpxxt60pujhs02r0zt9a733ofmyhsprmxw9max72f9az1cpsa48szbbi3cl0ah4tusuuin49vtzambzv8omzfa0lt9wkot1p17trvvvvwmrf31g14vvs59ea3uo3k2ycgibgxwnd7qbv6enrynzwhng30thklvk4mvrhf66ba0gqnyf0do6xn9xfjker8fnpr79zac6tsowm6oohszjc16k3a8iisv7yj7i67aq6r7f629zldmv9l816azzu96jikqaw02icsv9b79yy73gbvw0scid9266hph04m6nb3lae5a59d6djauw38i1wtd7qqn17uxugi4r52y0cfpjsb444uj30gih7jmek26uhdn41w2b2g0y34xl1kgxegkjtj6iq1u3k3zk34qtw76hysxj6jl7qrj908pa5vcao6m4i4m2h8sg4ir10mh1y315bakfag611ilwy7y569jh18ydabo5zgdyr7m5vcc9dqxj63nu2s67urqui8gnqu9u40hahyehqu9ugtqf8ab0m1v4fu5pr88k6ch7ep0echekocg78za1f74ladjgm',36))[3:]
a=[]
for x in range(0,len(K),18):
Y=K[x:x+18]
y=[Y[0:6],Y[6:12],Y[12:18]]
for x in range(0,3):
y[x]=int(y[x],2)*8
a.append(tuple(y))
i=new('RGB',(16,13))
i.putdata(a)
i.resize((386,320),1).save('2.png')
Edit:
6874.723629373318
The rectangles were made using an optimization algorithm that randomly changes each rectangle's position and color, and only accepts an answer better than before. So far, it is only 658 bytes.
from PIL import Image as I,ImageDraw as D, ImageFilter as F
i=I.new('RGB',(386,320))
K=[[127,176,47,257,85,52,160],[0,319,274,54,52,53,63],[321,0,0,233,84,108,139],[58,0,385,319,52,53,65],[156,318,47,122,33,38,35],[384,140,76,0,68,84,126],[353,140,86,220,79,102,113],[385,195,202,267,63,84,109],[312,162,385,13,127,146,153],[236,270,319,143,47,67,92],[331,198,110,80,103,124,147],[370,213,278,234,73,98,121],[311,54,70,107,88,109,146],[247,16,217,40,114,129,116],[372,23,325,87,183,177,97]]
e=D.Draw(i)
for x in range(0,len(K)):
x=K[x]
e.rectangle((x[0],x[1],x[2],x[3]),(x[4],x[5],x[6]))
i=i.filter(F.GaussianBlur(radius=4))
i.save('2.png')


