g | x | w | all
Bytes Lang Time Link
408uiua250908T004459Zphidas
370ZX Spectrum BASIC250907T193539ZNeil
295C gcc220503T130814Zmatteo_c
1124PostScript220501T220052Zbartysla

uiua, 408 bytes unformatted, 410 bytes formatted

˜⨬∘⨬Blue White↯48_48⋯utf"?????????????????????????\0\0\08????\0\0\08????\0\0\08???\x07 ?\x03\0\08?\x07 ?\x03\0\08?\x07 ?\x03\0\08?\x07\0 \x03<\x0f\0?\x07\0 \x03<\x0f\0?\x07\0 \x03<\x0f\0?\x07<#\x03\0\x0e\08\x07<#\x03\0\x0e\08\x07<#\x03\0\x0e\08\x07 ?\x03\0\x0e\08\x07 ?\x03\0\x0e\08\x07 ?\x03<\x0f\08\0\0\0\0<\x0f\08\0\0\0\0<\x0f\08\0\0\0\0\0\0\08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00\x0f\0\0\0\0\0\00\x0f\0?\0\0\0\00\x0f\0?\0\0\0\0\0\x0e\0?\0\0\0\0\0\x0e\08\08\0\0\0\x0e\08\08\0\00\x0f\08\08\x07\00\x0f\0?\08\x07\00\x0f\0?\08\x07\0\0\0\0?\08?\x1f\0\0\0\0\08??\0\0\0\0\08??\0\0\0\0\08?????\08??????\08??????\08??????\x07\0??????\x07\0??????\x07\0???????\x078??????\x078??????\x078????????????????????????"⋕&sc

pad

The format difference is due to the fact that utf (3 bytes) formats to utf₈ (4 bytes) In additon fmt adds rows as an operand to &sc. It needs &ims at the end to show the image if you are not in pad.

How i encoded it:

&frab "file.bmp"
↘⧻[66 77 54 27 0 0 0 0 0 0 54 0 0 0 40 0 0 0 48 0 0 0 48 0 0 0 1 0 24 0 0 0 0 0 0 27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]#replace this with whatever preamble your bitmap has
⁅÷255
▽⍜⍉°¤=0◿3°⊡
°utf₈°⋯↯384_6⇌

pad

Requires the file to be converted to a bitmap first.

ZX Spectrum BASIC, 370 bytes

listing

(Sorry for the graphical listing but it's too long for me to retype.) Takes 1 for teal and 0 for black as the input. Explanation: The graphic is run-length encoded. Each line of the image is represented by a block of digits; the first digit is the number of times the line is repeated, the second is the number of pairs of runs in the block, then there are that many pairs of digits corresponding to transparent and coloured. Runs of over 9 pixels have to be encoded as multiple pairs, but this is still golfier than having exact length runs.

screenshot

91 bytes for a miniature graphic:

listing

(Listing includes unprintable characters, but you can tell what the bytes are because they've already been copied into the user-defined characters.) Takes 1 for teal and 0 for black as the input. Explanation: Writes data for four user-defined graphic characters which are then printed in a square.

screenshot

C (gcc), 295 bytes

shorter version thanks to @ceilingcat

#define p putchar(v?-1:b
*s=L"\xcd=C=C=7;104;104;10100.+6100.+6100.+6.3+3++.-.3+3++.-.3+3++.-.3+310.3+310.30.10.30B+30B+\xcf.D.0.D.0.D.0+;+1+3+;+1+3+;+1+3.8+1.0.5.1.0.5.1.C.J6I7I=1O1O1L1O1O1L.R.R.\xdf";main(b,v,n){b%=2;for(v=printf("P6 48 48 255 ");*s;v=!v)for(n=*s++-40;n--;p*232))p*0),p*147);}

Try it online!

C (GCC), 318 bytes

#define p(x)putchar(v?255:b*x)main(b,v,n){unsigned char*s="\xcd=C=C=7;104;104;10100.+6100.+6100.+6.3+3++.-.3+3++.-.3+3++.-.3+310.3+310.30.10.30B+30B+\xcf.D.0.D.0.D.0+;+1+3+;+1+3+;+1+3.8+1.0.5.1.0.5.1.C.J6I7I=1O1O1L1O1O1L.R.R.\xdf";b%=2;for(v=printf("P6 %d %d 255 ",48,48);*s;v=!v)for(n=*s++-40;n--;p(232))p(0),p(147);}

Attempt This Online!

Outputs a PPM image. The image is run-length encoded in the variable s.

The boolean input is given via the number of arguments (basically corresponds to argc % 2).

PostScript, 132 112 + 4 bytes

x{0 .58 .91 setrgbcolor}if
9 9 scale 16 16 false[1 0 0 1 0 0]<~s8S_ka8b3"J.ITILd2AV!!%`RKQ2ZJ`^/O&rW<~>imagemask

Uses an ASCII Base-85 string to encode a 16x16 bitmap.

Takes input from command line: gs -dx=true np-nsp.ps or gs -dx=false np-nsp.ps; +4 bytes for -dx=. Output is displayed.