SCG Discord SCG Discord SCG Discord SCG Discord

Team Fortress 2

Discussion started on Thursday, January 11th, 2018 @ 03:25 AM EST by...

Introducing: the Spraymaker5000!


Spraymaker5000 can make super high quality sprays the like you've never seen before! Your typical high quality spray is 512x512 pixels, but Spraymaker5000 can do 1024x1020 pixels!


  • Easy to use click-and-drag UI!
  • Autocrop!
  • Scale to: Fit, Fill, Stretch, None! See here:
  • Easily determine the highest possible quality given the number of frames and mipmaps!
  • Make super high quality 1024x1020 pixel sprays!
  • Make animated sprays with the highest possible resolution for the number of frames needed!
  • Make fading sprays (resolution must be power of 2)!
  • Make animated fading sprays, because why not!
  • Automatically install sprays to games!

And here's a look at the UI:

Automatically installing the spray to specified games:
Spraymaker5000 BETA version installing to specified games
Making a super high quality 1024x1020 pixel spray:
Spraymaker5000 BETA version super high quality spray
Making an animated spray:
Spraymaker5000 BETA version animated spray
Making a fading spray, which is also uncompressed black and white (L8):
Spraymaker5000 BETA version fading spray
The ugly original example picture:
Spraymaker5000 BETA version

Just what's the big deal? See the quality difference for yourself:
(imgur additionally compresses images a bit, but you get the idea)

Download latest version:
Spraymaker5000 BETA version
SHA1: AFAC64025B4D519183E8A91BC4F9A5E3B4EF207D
SHA256: 82B6FA5D8E690946CDC0BB8BAAE2A4E02A268A410BFEEB24988F0A40939215E9

Download previous versions:
Spraymaker5000 BETA version
SHA1: 6A3CF56AA87F5187AC1CB45E1A946174D40B02A6
SHA256: C67E20A0EAFE6436A5AEDCC919AB6BF35BA2A318477BC60D24AB11376B546CF0

Spraymaker5000 BETA version
SHA1: BB1B02C63AEC2F34A706E618E49E1E94D97420E1
SHA256: 70A839FFDBA3C17C5E96C145D7F225CAABDF35460B8DAB42DBF99DF53DADAC53

Spraymaker5000 BETA version
SHA1: 2A046E446458A0D05D59E56A657A48CE404DE7DC
SHA256: AF33CBC24A797FAA90E67744F0CDD0380F8984D063AA54FE0F8C44BA3E89ED93

Spraymaker5000 BETA version
SHA1: AB241FB90F692A572CC65FAE11B7BD9C812D6E5D
SHA256: 668E49617BA6141483FE173AF6A114D4E9B3E700603174A2094B7FB9B127F91B

Last edited : by Artemus
Team Fortress 2Community Content

iconMordy/Magpai Species : Eurasian Magpie #2 Ghastly Ghoul
Pebble romancer champion

The sprays look amazingly HD and crisp but there is a odd bug or something that turns pictures that are... lets say 900x900 completely black but when scaled to 1000x1000 they work normally which is funky as fug

iconRowedahelicon Species : Crux Founder
"Crazy is as Crazy does"

This tool is great, look at how good this spray came out!

enter image description here

Bugfix for, using multiple of the same image file on the same mipmap level would crash due to the resulting image not creating an additional output file. Oops.

UI change for, now tells the user when the width or height isn't a multiple of 4 which doesn't work in Source.

So I did something to stress test it, and it worked... I converted an episode of MLP into a 80x76 pixel, 167 frame spray!

Take 8 frames per second, center crop to 1080:1080 for easy resizing without stretching:
ffmpeg.exe -i "YP-1R-01x23.mkv" -vf "fps=8/60, crop=1080:1080" out/a_%03d.png

Then cut out the intro and credits and click-dragged them all at once into Spraymaker5000 and set the resolution until it all fit at the highest possible resolution... and it worked!

If anyone would like that spray for whatever reason:

== Updated to
Some UI changes, hopefully improvements!
Replaced the GrumbleBox (the textbox that spams warning messages) with a collection of more useful errors.
Mipmap mode selector and fill buttons are disabled when there aren't any mipmaps.
"Save as" button disabled until all images are filled.
Added "Max Res" button that will find the maximum possible resolution for the given image format, frames, and mipmaps. Won't do odd resolutions like 512x256 since the user probably doesn't want that.
Progress bar is now slightly better. Without threading it can't be made more accurate.
Removed unneeded dependencies.

== Updated to
NOLOD is now enabled by default, as it allows for players with low graphics settings to see fading sprays properly. Thanks to an Anon for the info.
ALL_MIPS is enabled when the smallest generated mipmap is below 32 pixels. But it turns out sprays don't honour this flag anyway so it's pointless. Oops.
Now warns user when the minimum mipmap requirement of 32 pixels isn't met.
Removed unneeded language folders.

iconMordy/Magpai Species : Eurasian Magpie #2 Ghastly Ghoul
Pebble romancer champion

Time to S P R A Y

== Updated to
Added support for uncompressed formats grayscale L8/I8, grayscale alpha A8L8/IA88, colour R8G8B8/BGR888, colour alpha A8R8G8B8/BGRA8888. If your image's native resolution can fit within these the resulting image will look better!
Added warning about aspect ratio not being close to 1:1, since regardless of the spray's actual resolution it will be stretched to fit 1:1 in-game.
I wrote a wrapper DLL in C++ for crnlib to call directly from C# to not need crunch.exe. But, the performance hit was way too much to consider using, due to threading I'd guess. Not implemented.
Tested "Point Sampling" flag for pixel art but the results don't look any clearer, seems grainy instead. Not implemented.

There is an online spray converter that can do 1024x1020, but! The colour quality isn't as good as crnlib or vtflib.
From left to right, image converted to DXT1A: Mishcatt vs. Spraymaker5000 vs. VTFEdit colours
And the website:

Last edited : by
You must be logged in to comment!