How can this code be more "golfed"? I'm not sure if this is the right place to ask, but I found this similar question so I'll go ahead.
I'm very new to code golfing, so keep your smothered laughs and throw-up emoji's to yourselves please ;). Anyway, someone recently posted a challenge (that was shortly deleted) to draw a 16x16 pixel image of the Old Man from the original Legend of Zelda, who gives you the wooden sword.
This guy:
Here's my code (643 characters):
from PIL import Image,ImageColor
g=ImageColor.getrgb
r=range
l=[list('0000033333300000000023233232000000003313313300000000331331330000000042333324000000042222222240000044220000224400044224222242244034424422224424433444442222444443344404422440444304440444444044400444044444404440004044444444040000004444444400000004433443344000'[i*16:i*16+16])for i in r(16)]
i=Image.new('RGB',(16,16),color='black')
for j in r(16):
    for k in r(16):
        t=k,j
        v=l[j][k]
        if v=='2':
            i.putpixel(t,g('white'))
        if v=='3':
            i.putpixel(t,g('#FFC864'))
        if v=='4':
            i.putpixel(t,g('red'))
i.show()

It's bad, I know. Anyway, anyone care to share some tips on shortening it?
Splitting the string into rows of 16 and then using two nested loops to go over each pixel is taking a lot of bytes to do. It would be easier to just loop over the original string and use (index%16,index//16) to point at a specific row and column.
Also, instead of specifying a background color you can just draw every single pixel, which is shorter when using hyper-neutrino's advice to use a list of colors. You can also use #000 and #FFF instead of black and white (1 byte shorter each).
Bonus tip: (16,16) can become [16]*2 (1 byte shorter)
Combining this with knosmos huge save by using data compression and makonede's suggestion to use as imports we can get this down to 353 bytes:

import base64,zlib
from PIL import Image,ImageColor as C
i=Image.new('RGB',[16]*2)
for j in range(256):i.putpixel((j%16,j//16),C.getrgb(['#000','#000','#FFF','#FFC864','red'][int(zlib.decompress(base64.a85decode(b&quot;Garp%d1+#J#QrG=W9sOr.gFe$difq+:dD#Fi'\\kVYS/be9`DBVETlH%2Un&gt;#OH/p!dpQBq?eAD\\o?Ok%[FUW&gt;EJ8;cLZ6ZbI2XaB#r3e&quot;)).decode(&quot;u8&quot;)[j])]))
i.show()