Vector icons with Raphaël
raphaeljs.com
raphaeljs.com
This is the top-left question mark icon.
M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466z M17.328,24.371h-2.707v-2.596h2.707V24.371zM17.328,19.003v0.858h-2.707v-1.057c0-3.19,3.63-3.696,3.63-5.963c0-1.034-0.924-1.826-2.134-1.826c-1.254,0-2.354,0.924-2.354,0.924l-1.541-1.915c0,0,1.519-1.584,4.137-1.584c2.487,0,4.796,1.54,4.796,4.136C21.156,16.208,17.328,16.627,17.328,19.003z
It's around 430 bytes. Cropped from a screenshot, Photoshop says 705 bytes for gif, 643 bytes for 8 bit png (without transparency or scalability or anything).
Raphael.js from the page is >50KB. There's also an onload function to initialize the path, around 1KB (includes loops etc. specific to this page).
OT, but it sort of reminds me of drawing xbm icons in the early days of the web.
PNG, 339 bytes: http://i.imgur.com/68vR8.png
Also don't forget that the path string will be gzipped (to around 220 bytes).
(I used GIMP to add transparency, and pngopt to get the file size down.)
That 430 bytes string becomes 222 bytes and RaphaelJS becomes just under 20k.
http://www.ece.iastate.edu/~pjscott/raphael_icons/raphael_ic...
The images are also available individually, along with source code:
http://www.ece.iastate.edu/~pjscott/raphael_icons/
Automation is great, isn't it? One problem I ran into is that ImageMagick was giving some nasty bugs on a few of the SVG files, so I had to switch to librsvg instead, which worked properly (and faster).
EDIT: Submitted to HN along with a bit more commentary:
But if you want to do much more complex vector graphics you should probably consider using .png or .gif instead
It's when you need small variations, e.g. in color, size or shape, or some animation, that benefits kick in. Also, you can put all icons in the same easily cacheable JS-file.
Even if the icons where regular images I would use either data uris or an image sprite.
http://raphaeljs.com/reference.html#path http://www.w3.org/TR/SVG/paths.html#PathData
While the icons themselves are not SVG, Raphaeljs draws these icons as SVG (VML under IE) in Javascript.
Is there an easier way than building a web page with the image and screenshotting it?
2. paste it into this template (taken from the same page) http://gist.github.com/432341
3. save it with the .svg extension
4. open it in inkscape http://www.inkscape.org/ (or probably illustrator etc.)
5. file -> export
inkscape --export-png=x.png x.svg